Kendo ui 剑道与MVVM自动完成|未设置绑定对象
我正在使用Telerik的Kendo ui 剑道与MVVM自动完成|未设置绑定对象,kendo-ui,Kendo Ui,我正在使用Telerik的Kendo UI和他们的autocomplete小部件以及他们的MVVM框架,并且在获取一个框以将检索(和选择)的对象设置为视图模型上的绑定对象时遇到了一些困难。例如 var viewModel = kendo.observable({ Context: {} }); $("#context").kendoAutoComplete({ dataTextField: "Name", dataValueField: "Id", delay: 8
Kendo UI
和他们的autocomplete
小部件以及他们的MVVM
框架,并且在获取一个框以将检索(和选择)的对象设置为视图模型上的绑定对象时遇到了一些困难。例如
var viewModel = kendo.observable({
Context: {}
});
$("#context").kendoAutoComplete({
dataTextField: "Name",
dataValueField: "Id",
delay: 800,
dataSource: {
dataType: "json",
serverFiltering: true,
transport: {
read: {
url: "/search/data",
data: function (data) {
return {
term: data.filter.filters[0].value
}
}
}
}
}
}).data("kendoAutoComplete");
然后我使用下面的HTML
<input data-val="true"
id="context"
name="context"
placeholder="Context"
type="text"
data-bind="value: Context" />
但是,当我在使用“自动完成”搜索对象后选择该对象时,viewmodel上的Context
属性仍保持为null
我可以通过添加一个特定的select
函数来避免这种情况
select: function(e) {
var dataItem = e.sender.dataItem(e.item.index()).toJSON();
// update the model
viewModel.set('Context', dataItem);
}
但我真的宁愿它像它应该的那样工作;有什么建议吗?问题是您将
viewModel
定义为可观察的对象,但没有将其绑定到输入
尝试按如下方式添加绑定:
kendo.bind($("#context"), viewModel);
在这里检查:是的,我在代码中有;对不起,我只是认为这是行为的一部分。页面中还有其他绑定,它们都绑定正确。但是我在回答中包含的JSFIDLE是否适合您呢?这仍然没有将属性设置为实际选定的项;您的示例只获得文本的实际标签。不幸的是,我的问题是我需要整个对象;不仅仅是名字。嘿,我花了更多的时间在你的演示上,我发现了一些东西;如果删除dataValueField
并放入valuePrimitive:false
,它将正确地将其设置为整个JSON对象!演示在这里:尽管我还有一个问题。当小部件首次加载时,它在文本框中显示为[Object]。有什么办法可以防止吗?
kendo.bind($("#context"), viewModel);