在这里使用淘汰赛。我有一个像这样的HTML:
<p>
Choose:
<select data-bind="options: countries
value: selectedCountry,
valueAllowUnset: false
"></select>
</p>
<p>Choice: <span data-bind="text: selectedCountry"></span> </p>
<button data-bind="click: changeCountry">Change Value</button>
这样的剧本:
function ViewModel() {
var self = this;
self.countries = ['list1','lsit2','list3'];
self.selectedCountry = ko.observable('list4');
self.changeCountry = function() {
self.selectedCountry('NEGA booom');
};
ko.applyBindings(new ViewModel());
在加载和单击按钮时,跨度中显示的文本是正确的。当我改变下拉时它不会更新。
我阅读了大量关于淘汰赛的文档,并且不明白&#39; valueAllowUnset&#39;作品
编辑:关于这个问题的更多一点:我有一个动态渲染列表,基于所选择的其他一些选项。由于selectedCountry
是ko.observable
,当该列表清除以进行更新时,所有<options>
都会消失,并且selectedCountry
的值设置为undefined
。< / p>
这是一个小提琴:
答案 0 :(得分:1)
您正尝试将valueAllowUnset
与ko 3.0版本一起使用,但稍后会从ko 3.1中引入 here
valueAllowUnset选项:现在有一个valueAllowUnset选项用于值与包含的值不匹配的场景 选项:
- 如果将此选项设置为true,则Knockout不会强制该值与现有选项匹配。
- 如果不匹配,选择将设置为空选项,但不会覆盖该值。
当您使用某些值进行更新时会出现问题,因为在这种情况下,选项会使事情变得混乱valueAllowUnset
是一个救星,它将下拉选项设置为空以使事情不会失去同步
查看:
<p>Choose: <select data-bind="options: countries,,optionsCaption:'-select-',value: selectedCountry,valueAllowUnset: true"></select></p>
<p>Choice: <span data-bind="text: selectedCountry"></span> </p>
<button data-bind="click: changeCountry">Change Value</button>
检查 here 是否有工作样本
答案 1 :(得分:0)
我想这是一个较晚的答案,但由于我已经在这里... 问题在于“选项”绑定后昏迷缺失。 Knockoup只应用选项绑定,而忽略其余部分,因为它无法解析它。