2014-12-08 3 views
0

Я пытаюсь вставить более одного значения в атрибут dataTextField после выбранного элемента (шаблон работает отлично, но влияет только на то, что отображается пользователю в выпадающем меню). Я попытался решить id с помощью функции parse:Kendo autocomplete, как вставить более одного значения в 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

Ваша разборе идея должна работать, но ваше определение схемы находится вне источника данных. Если вы отбросите его внутри источника данных, он не сработает.

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

Вот рабочий пример:

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

Смежные вопросы