【发布时间】:2017-04-21 19:05:17
【问题描述】:
我在我的 ASP.NET MVC 项目中使用bootstrap dual listbox pluging。
我也在项目中使用 Knockout。我正在尝试为此插件创建bindingHandler,以使其在淘汰赛中顺利运行。
这是我尝试过的
绑定处理程序
ko.bindingHandlers.dualList = {
init: function (element, valueAccessor) {
$(element).bootstrapDualListbox({
selectorMinimalHeight: 160
});
$(element).on('change', function () {
$(element).bootstrapDualListbox('refresh', true);
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).bootstrapDualListbox('destroy');
});
},
update: function (element, valueAccessor) {
$(element).bootstrapDualListbox('refresh', true);
}
}
HTML
<select class="form-control" data-bind="foreach:{data: EditedElement().Operations, as : 'op'} , dualList: EditedElement().Operations" multiple>
<option data-bind="value: op.OperationID(), text: op.Name(), selected: op.IsSelected()"></option>
</select>
查看模型
function SelectOperationVM(operationId, isSelected, name) {
var self = this;
self.OperationID = ko.observable(operationId);
self.IsSelected = ko.observable(isSelected);
self.Name = ko.observable(name);
self.copy = function () {
return new SelectOperationVM(self.OperationID(), self.IsSelected(), self.Name());
}
}
我的问题是,我无法在 viewModel observableArray 和插件之间进行同步。
换句话说,我希望插件中的更改(用户删除了一些选项或添加了一些选项)反映在视图模型属性上,反之亦然
【问题讨论】:
标签: asp.net-mvc knockout.js bootstrap-duallistbox