将对象添加到数组数组

时间:2012-08-13 12:46:39

标签: knockout.js

我想在产品对象中添加成分。

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

1 个答案:

答案 0 :(得分:1)

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