Knockout双向绑定嵌套数组
问题描述:
我有麻烦得到绑定工作的嵌套数组。当页面第一次加载时,这些值显示正确,但是当我进行编辑时,绑定对象不会更新。Knockout双向绑定嵌套数组
我在这里创建了一个jsfiddle:http://jsfiddle.net/coverbeck/qCzT6/1/。
我的HTML是这样的:
<body>
<ul>
<!-- ko foreach: {data: cities, as: 'city'} -->
<li>
<input data-bind="value: city.name"/>
<span data-bind="text: city.name"></span>
</li>
<ul>
<!-- ko foreach: {data: neighborhoods, as: 'neighborhood'} -->
<li>
<input data-bind="value: neighborhood"/>
<span data-bind="text: neighborhood"></span>
</li>
<!-- /ko -->
</ul>
<!-- /ko -->
</ul>
</body>
我的JavaScript是:
var sf = {name: ko.observable('San Francisco'),
neighborhoods: ko.observableArray([
ko.observable('Haight'),
ko.observable('Bayview'),
ko.observable('Marina')
])
};
var ny = {name: ko.observable('New York'),
neighborhoods: ko.observableArray([
ko.observable('Hells Kitchen'),
ko.observable('Times Square')
])
};
var cities = ko.observableArray([sf, ny]);
var viewModel = { cities: cities };
ko.applyBindings(viewModel);
当我修改的城市名称,相应的span元素的更新。当我修改邻域名称时,相应的span元素不会更新。
我问了一个类似的问题已经here,答案奏效。我似乎再次遇到同样的问题,除了这次是一个嵌套数组,我看到了问题。我尝试了对嵌套数组的解决方案,但在这种情况下似乎没有什么区别。
感谢,
查尔斯
答
我不知道究竟在何处您的问题是从哪里来的,但它可以解决这样的:
var ny = {name: ko.observable('New York'),
neighborhoods: ko.observableArray([
new neighborhood('Hells Kitchen'),
new neighborhood('Times Square')])};
function neighborhood(name) {
this.name = ko.observable(name);
}
然后你绑定的foreach neighborhoods
然后绑定到name
。问题可能是它不喜欢没有名字的观测值?
人,你的代码格式是残酷的。你甚至可以阅读吗? – Tyrsius 2013-03-19 15:50:13
“Atrocious”看起来有点苛刻,但我更新了格式。 – 2013-03-19 16:49:33