1

我正在尝试扩展剑道多选,使其具有默认数据源和模板。除了 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 中。

编辑:

我添加了一个活生生的例子

4

1 回答 1

0

至少在您的演示中,这是一个微不足道的问题:您data-value-field错了。结果,活页夹无法匹配所选元素。

代替

<div data-role="entitymultiselect" 
 data-bind="value: selected" 
 data-value-field="ProductId"></div>

你需要

<div data-role="entitymultiselect" 
 data-bind="value: selected" 
 data-value-field="ProductID"></div>

工作演示

由于您没有在问题的代码中定义值字段,因此可能是同一个问题。

于 2014-07-01T23:39:44.870 回答