javascript - 扩展 MultiSelect 小部件会破坏 MVVM 中的值绑定(bind)

标签 javascript jquery jquery-plugins mvvm kendo-ui

我扩展了多选小部件,没有什么特别的。问题是值(value)观的约束不再起作用。在第一个示例中,我使用 native 小部件并很好地绑定(bind)值。第二个是我使用扩展多选的地方,它在值绑定(bind)上失败并且为空。

HTML:

<selectdata-role="multiselect"data-bind="source: selectData, value: selectedIDs"data-text-field="Name"data-value-field="ID"></select>
<selectdata-role="multiselectcustom"data-bind="source: selectData, value: selectedIDs"data-text-field="Name"data-value-field="ID"></select>

Javascript:

//EXTEND MULTISELECT WITH NOTHING MUCH
kendo.ui.plugin(kendo.ui.MultiSelect.extend({
    init: function(element, options) {
        kendo.ui.MultiSelect.fn.init.call(this, element, options);
    },
    options: {
        name: 'MultiSelectCustom'
    }
}));

varviewModel = kendo.observable({
    selectedIDs: [ 1, 3 ],
    selectData: [{
        Name: 'Bill Smith',
        ID: 1
    }, {
        Name: 'Jennifer Jones',
        ID: 2
    }, {
        Name: 'Tim Philips',
        ID: 3
    }]
});

kendo.bind('body', viewModel);

enter image description here

我想我可以再次为“值”重新创建 Binder ,但这确实是一个错误吗?我有一个 jsFiddle 演示了这一点:http://jsfiddle.net/basememara/2Dacw/9/

最佳答案

这并不是一个错误,因为多选已为其设置了自定义 Binder 。您可以尝试为新的扩展 Angular 色复制多选 Binder 。

试试这个:

 kendo.data.binders.widget.multiselectcustom = kendo.data.binders.widget.multiselect;

您可以将其放置在小部件扩展代码之前/之后,但这应该告诉绑定(bind)函数如何正确绑定(bind)到您的小部件。

我还会查看自定义 Binder 的剑道文档,请注意,尽管它不是很全面

关于javascript - 扩展 MultiSelect 小部件会破坏 MVVM 中的值绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710032/

相关文章:

javascript - 如何设置表格中单选按钮选择的限制?

jquery - 如何向 Bootstrap 轮播添加静态内容?

javascript - 如何使用 jQuery UI Accordion 访问单击的标题 (h3) 的 ID?

jQuery Cookie 插件行为 : is setting domain to ".com" if cookie is session cookie

javascript - 如何覆盖向上箭头键以像向右箭头键一样工作

javascript - 打印选项打不开

javascript - jQuery.get 与 &lt;script async src ="...">

jquery - 我如何创建像 youtube 一样带有悬停的 jQuery UI 按钮

javascript - 变量字典内容

javascript - 设置 jQuery cookie 时出现问题