我正在尝试扩展剑道多选,使其具有默认数据源和模板。除了 MVVM 对象中的预加载值外,它都可以正常工作。当我开始更新 exented 多选时,MVVM 的值得到更新,初始项目没有预加载:
kendo.ui.plugin(kendo.ui.MultiSelect.extend({
init: function(element, options) {
var ds = new kendo.data.DataSource({
type: "json",
serverFiltering: true,
transport: {
read: {
url: "/SecurityEntities",
dataType: "json"
},
parameterMap: function(data) {
return {
prefixText: '',
count: 5,
getUsers: true,
getGroups: false
};
}
},
schema: {
data: function(data) {
console.log($.parseJSON(data));
return $.parseJSON(data);
}
}
});
options = options == null ? {} : options;
options.itemTemplate = "...";
options.tagTemplate = "...";
options.dataSource = ds;
kendo.ui.MultiSelect.fn.init.call(this, element, options);
},
options: {
name: 'EntityMultiSelect'
}
}));
kendo.data.binders.widget.entitymultiselect =
kendo.data.binders.widget.multiselect;
然后我的html是:
<div data-bind="value: machine.Managers" data-role="entitymultiselect"
data-delay="400" data-animation="false"
data-placeholder="Select users to notify"></div>
我将整个容器绑定到页面的 viewModel 对象。
我已经看到其他人对此问题有疑问并添加了
kendo.data.binders.widget.entitymultiselect =
kendo.data.binders.widget.multiselect;
(是的,这确实看起来像一个错误)
但它仍然不起作用。
当 Machine.Managers 中已有值时,它不会加载它们。但是,如果我向多选添加值,它们会被添加到 Machine.Managers 中。
编辑:
我添加了一个活生生的例子