我正在努力使jQuery Chosen和KnockoutJS在同一时间工作。jQuery Chosen不使用淘汰js更新选择选项
问题是“jQuery Chosen”拒绝更新选项列表,即使我已经为它创建了自定义绑定。
这里是例子 - http://jsfiddle.net/5fGAf/
我有两个选择多变 - “国家”和“方法”。 “方法”选项列表取决于选择的国家。当我第一次选择国家时 - 一切都很完美。但是当我想改变国家 - “方法”选项列表保持不变,即使相应的敲除计算值被更新。
如果我在浏览器控制台中手动运行$(".chosen-select").trigger('chosen:updated')
- 选项列表更新。
自定义代码:
ko.bindingHandlers.chosen = {
init: function(element) {
$(element).chosen({disable_search_threshold: 10});
},
update: function(element) {
$(".chosen-select").trigger('chosen:updated');
}
};
在使用该解决方案面临的问题的方式 - 如果观察到,负责选择选择选项reseted('observableVariable( null)') - 选择不正确更新。这里是例子 - [JSFiddle](http://jsfiddle.net/VxMqV/)。提前致谢! – Shtirlits
问题有两方面:一方面,自KO 3.0以来,当您选择的observable发生更改时,您的自定义更新不会触发,而另一方面,如果选择值发生变化,选定的插件不会自动处理。所以你需要手动订阅'value'绑定,并在底层observable发生变化时触发'selected:update':这是一个使用更新的绑定处理函数的示例:http://jsfiddle.net/SWEt2/ – nemesv
优秀的答案nemesv - 希望如果有其他人遇到此问题,他们会赞成,因为这是一个比较高评分的Google结果更好的解决方案。 –