无论出于何种原因,只要GroupType
选择列表发生变化,我就无法通过敲除来触发可见的更新。我在下面有一个简短的例子:
<script id="process" type="text/x-jquery-tmpl">
<select data-bind="value: GroupType">
<option value="0">example 0</option>
<option value="1">example 1</option>
<option value="2">example 2</option>
<option value="3">example 3</option>
</select>
<select data-bind="value: Group, visible: GroupType() == '2'">
<option value="1">option 1</option>
<option value="2">option 2</option>
</select>
<input type="text" data-bind="value: Group, visible: GroupType() != '2'"/>
</script>
<div data-bind="template { name: 'process', foreach: Processes }"></div>
<script type="text/javascript">
var viewModel = {
Processes: ko.observableArray([
{ GroupType: ko.observable("1"), Group: ko.observable("Blah") },
{ GroupType: ko.observable("2"), Group: ko.observable("1") }
])
};
ko.applyBindings(viewModel);
</script>
编辑1:我已经包含了下面建议的更改,但不是允许切换这两个项目,而是只显示最后一个项目而不管选定的GroupType
编辑2:我为此制作了一个jsFiddle:http://jsfiddle.net/2jjgH/
编辑3(最终):编辑已在上面进行,以反映以下答案。
答案 0 :(得分:1)
observableArrays
仅通知对阵列本身的更改(添加项目,删除项目,替换整个阵列)。它们不跟踪各个属性。您需要制作GroupType
和Group
observables
才能在您的方案中更新用户界面。