2014-12-08 1 views
0

선택한 항목 (템플릿은 정상적으로 작동하지만 드롭 다운 메뉴에서 사용자에게 표시되는 내용에만 영향을줍니다) 이후에 하나 이상의 값을 dataTextField 특성에 삽입하려고합니다. 나는 구문 분석 함수를 사용하여 ID를 풀려고했다 :Kendo 자동 완성, dataTextField에 값을 두 개 이상 삽입하는 방법

schema: { 
      parse: function(response) { 
       $.each(response, function(idx, elem) { 
        elem.fullName = elem.name + " " + elem.surname; 
       }); 
       return response; 
      } 
     }, 

그러나 이것은 작동하지 않는다.

DataGrid가 아닌 형식으로 독립 실행 형 자동 완성입니까?

어떻게 해결할 수 있습니까?

도움 주셔서 감사합니다. 여기

전체 방법의 코드입니다 :

$scope.$watch("workerDetail.newSuperiorName", function() { 
    console.log($scope.workerDetail.superior); 
    $scope.customOptionsSuperior = { 
    dataSource: { 
     type: "json", 
     serverFiltering: true, 
     transport: { 
     read: function (options) { 
      console.log("List"); 
      console.log(options.data); 
      console.log(options.data.filter.filters[0].value); 
      requestParams = { 
      "entityName": "worker", 
      "data": { 
       "page": 1, 
       "pageSize": 20, 
       "filter": { 
       "logic": "or", 
       "filters": [ 
        { 
        "value": $scope.workerDetail.newSuperiorName, 
        "operator": "contains", 
        "field": "name", 
        "ignoreCase": true 
        }, 
        { 
        "value": $scope.workerDetail.newSuperiorName, 
        "operator": "contains", 
        "field": "surname", 
        "ignoreCase": true 
        } 
       ] 
       }, 
       "sort": [ 
       { 
        "field": "name", 
        "dir": "asc" 
       } 
       ] 
      } 
      }; 
      ApiService.doHttpRequest(
      "POST", 
      $rootScope.apiBaseUrl + "worker/search", 
      requestParams 
     ) 
      .success(function (data, status, headers, config) { 
       // successful data retrieval 
       console.log("request success, checking state"); 
       console.log(data); 
       // sent status to global HTTP status service 
       var jsonResponse = ApiService.processReturnedHttpState(status); 
       console.log("Status response is " + jsonResponse.result); 
       // do something with data 
       switch (jsonResponse.result) { 
       case true: 
        if (data.results == null) { 
        growlNotifications.add($translate.instant('NO_ITEM_FOUND'), 'error', $rootScope.notificationLifetime); 
        options.success([]); 
        } else { 
        options.success(data.results); 
        } 
        break; 
       case false: 
        growlNotifications.add($translate.instant('LIST_LOADING_ERROR'), 'error', $rootScope.notificationLifetime); 
        break; 
       } 
      }) 
      .error(function (data, status, headers, config) { 
       console.log("Error"); 
       console.log("Autocomplete loading error"); 
       growlNotifications.add($translate.instant('AUTOCOMPLETE_ERROR'), 'error', $rootScope.notificationLifetime); 
      }); 
     } 
     } 
    }, 
    schema: { 
     parse: function(response) { 
      $.each(response, function(idx, elem) { 
       elem.fullName = elem.name + " " + elem.surname; 
      }); 
      return response; 
     } 
    }, 
    dataTextField: "fullName", 
    // using templates: 
    template: '#: data.name # #: data.surname #', 
    change: function (option, data) { 
     console.log("change"); 
     console.log(this.value()); 
    }, 
    // event triggered after selection of the item from autocomplete 
    select: function (e) { 
     console.log("select"); 
     var item = e.item; 
     var text = item.text(); 
     var index = item.index(); 
     var dataItem = this.dataItem(index); 
     $scope.workerDetail.superior = dataItem; 

    } 
    }; 
}); 

답변

0

귀하의 구문 분석 아이디어가 작동해야하지만 스키마 정의는 데이터 소스의 밖에 있습니다. 데이터 소스 안에 놓으면 문제가 없어야합니다.

http://dojo.telerik.com/eWapI/2

: 여기

dataSource: { 
    ... 
    schema: { 
     ... 
    } 
} 

는 작업 예제

관련 문제