1

我想向产品对象添加成分。

<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:无法读取未定义的属性'成分''抛出。

4

1 回答 1

1

我为你写了一个小提琴。有用!
要访问products你必须写products()[0],但不是products[0],因为这()意味着get value
这个小提琴是新的淘汰赛风格
http://jsfiddle.net/hBsFM/3/
而这个小提琴是你使用的风格
http://jsfiddle.net/zjF6c/

于 2012-08-13T14:14:39.773 回答