2013-12-10 23 views
1

我正在嘗試使用kendo angular的auto自動完成小部件,並使用服務器過濾。在服務調用之後,彈出窗口顯示[對象對象],其數量等於從服務器返回的結果。所以你可以看看我的代碼,並指出我所犯的錯誤。Kendo Angular的Auto在結果中完成顯示對象

這裏是我的代碼:

var oThis = this; 
var uiQueryConfig = this.seUIConfigsCacheService.GetItem('OpportunityDashboard'); 

var dataSource = new kendo.data.DataSource({ 
serverFiltering: true, 
serverPaging: true, 
pageSize: 20, 
transport: { 
    read: function (options) { 
      oThis.getDataFromServer(options, uiQueryConfig, false, options.data.filter.filters[0].value); 
     } 
    } 
}); 

$scope.dataSource = dataSource; 

這裏是getDataFromServer的定義:

getDataFromServer(options: any, uiConfig: Model.UIConfig, recordsCountNeeded: boolean, searchText?: string): void { 

var searchParam = new Model.SearchParamsCM(); 
searchParam.PageIndex = options.data.page; 
searchParam.PageSize = options.data.pageSize; 
searchParam.SearchText = searchText; 

var oThis = this; 

this._seHttpService.GetWithParms('/spa/api/genericrequest', searchParam) 
    .then(function (result) { 
     var datum = oThis.createJSONFromResults(result.data, uiConfig); 

     if (recordsCountNeeded) //grid 
      options.success(datum); 
     else //auto complete 
      options.success(datum.data); 
     }, 
     function (result) { 
      options.error(result); 
    }); 
} 

的代碼是打字稿。

這是模板:

<input id="name" kendo-auto-complete k-min-length="3" k-data-text-field="name" k-ignore-case="true" k-data-source="dataSource" ng-model="searchText" /> 

我試着調試options.success功能,並發現該參數值也有很多其他的信息,包括整個對象從服務器返回的,而不是一個我通過它,即datum.data。

感謝您的期待!編輯: 好吧,我已經整理出來了。實際上有兩個問題,首先是k-data-text-field中的變量名應該用單引號,即k-data-text-field =「'name'」。其次變量名是區分大小寫的,所以它應該是k-data-text-field =「'Name'」

+0

請問您可以看看數據源中的數據嗎? dataSource._data。使用chrome控制檯查看數據結構。你的數據對象是否有名爲name的屬性?它是一個字符串嗎? –

+0

我不知道如何檢查dataSource._data,因爲該服務在傳輸的dataSource的讀取屬性中調用。這個函數數據源裏面還沒有建立,所以我在哪裏檢查它? – Haris

+0

好的我檢查了選擇自動完成事件中的數據源。是的,我的數據在那裏是對象的集合,並且有一個名爲Name的屬性。 – Haris

回答

2

好吧,我已經整理出來了。實際上有兩個問題,首先是k-data-text-field中的變量名應該用單引號,即k-data-text-field="'name'"。第二個變量名是大小寫敏感的,所以應該已經k-data-text-field="'Name'"

0

如果你想從太多的屬性減輕你的HTML,你可以通過K-options屬性您劍道元素是這樣的:

<input id="name" kendo-auto-complete k-options="acOptions" k-data-source="dataSource" ng-model="searchText" /> 

然後在你的示波器上定義如下選項:

$scope.acOptions = { 
    minLength: 3, 
    dataTextField: 'name' 
    ignoreCase: true 
}