我已经开始扩展所选择的库,通过使用knockout observables创建一个on fly fly标记功能来保存选定的值,但是我遇到了几个问题。希望有人可以提供一些帮助。
观察到的问题:
输入两个以上的标签会删除第一个条目后添加的任何项目,并将其替换为最后输入的标签。从标签列表中选择选项效果很好,但是输入新标签会强制执行与前面提到的相同的行为。
自定义KO装订:
ko.bindingHandlers.chosenTagging = {
init: function (element, valueAccessor, allBindings) {
$(element).chosen({ width: '100%', disable_no_results: true, enable_custom_content: true, placeholder_text_multiple: 'Enter Tag(s)' });
var valuesObservable = allBindings.get('selectedOptions');
var updateList = function () {
$(element).trigger('chosen:updated');
}
if (valuesObservable && typeof (valuesObservable.subscribe) == 'function') {
valuesObservable.subscribe(updateList);
}
},
update: function (element, valueAccessor, allBindings) {
$(element).trigger('chosen:updated');
}
};
JSFiddle:
http://jsfiddle.net/S3H2A/5/
注意:如果您在小提琴中添加了所选的JS,请说明进行更改的行号。
此处发现类似帖子:Add values to a chosen multiselect
答案 0 :(得分:1)
你有一个:
$(element).trigger('chosen:updated');
一个
$(element).trigger('liszt:updated');
我认为最后一个已从选中删除,它是前一版本的语法。 (虽然这可能不是你问题的答案)
另一个问题是当ko.bindingHandlers.chosenTagging.update
函数被调用时
绑定更改中的可观察对象,但没有(chosenTagging: { }
)。
至于你的真正问题,我认为selectedOptions
绑定在没有options
绑定的情况下效果不佳。
使用options
绑定可以正常工作:demo
如果您希望保留使用enable_custom_content_mode
输入自定义输入的可能性,则必须找到解决方法。