我正在尝试使用服务器过滤来使用kendo angular的自动完成小部件。在服务调用之后,弹出窗口显示[object Object],其数量等于从服务器返回的结果。那么请你看看我的代码并指出我正在做的错误。
这是我的代码:
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 =&#34;&#39; name&#39;&#34;。其次,变量名称区分大小写,因此它应该是k-data-text-field =&#34;&#39; Name&#39;&#34;
答案 0 :(得分:2)
好的我已整理出来了。实际上有两个问题,首先是k-data-text-field中的变量名应该是单引号,即k-data-text-field="'name'"
。其次,变量名称区分大小写,因此它应该是k-data-text-field="'Name'"
答案 1 :(得分:0)
如果您希望从过多的属性中解除HTML,可以将k-options属性传递给您的kendo元素,如下所示:
<input id="name" kendo-auto-complete k-options="acOptions" k-data-source="dataSource" ng-model="searchText" />
然后在您的范围内定义选项,如下所示:
$scope.acOptions = {
minLength: 3,
dataTextField: 'name'
ignoreCase: true
}