我想在产品对象中添加成分。
<ul data-bind="foreach: products">
<li data-bind="text: name"></li>
<li>
<ul data-bind="foreach: ingredients">
<li data-bind="text: name"></li>
</ul>
</li>
</ul>
<script>
var viewmodel = {
products: ko.observableArray([])
};
ko.applyBindings(viewmodel);
</script>
如果我执行下面的代码,它可以正常工作:
viewmodel.products.push({
name:"product name",
ingredients:[{name:"ingredient 1"},{name:"ingredient 2"}]
})
但是现在我需要访问最后添加的产品并添加一种成分..就像那样:
viewmodel.products[0].ingredients.push({name:"ingredient 3"})
但是当我这样做时,错误'TypeError:无法读取属性'未定义的'成分'抛出。
答案 0 :(得分:1)
我为你写了一个小提琴。有用!
要访问products
,您必须写products()[0]
,而不是products[0]
,因为()
表示get value
这个小提琴是新的淘汰赛风格
http://jsfiddle.net/hBsFM/3/
这个小提琴就是你用的风格
http://jsfiddle.net/zjF6c/