knockout:无法从嵌套的foreach

时间:2016-03-30 02:34:03

标签: javascript knockout.js

我正在尝试从嵌套的foreach中访问根级别属性。

<!-- ko foreach: { data: items, 'as': 'item' } -->
<tr data-bind="foreach: { data: $parent.columns, 'as': 'column' }" >
  <td>{{ item[column.key]  }}</td>
    <!-- ko if: $root.thing -->
    <td><button class="btn btn-default" >click me</button></td>
    <!-- /ko -->            
</tr>
<!-- /ko -->

thing是一个普通的对象,而不是一个可观察的对象。 $root.thing正在评估为假。我也试过$parent[1].thing。这给了我一个绑定错误Message: Cannot read property 'thing' of undefined,这很奇怪,因为在这种情况下我认为$root$parent[1]是等效的。

编辑:此代码是组件的一部分。在视图中它看起来像这样:

<component data-bind="thing: {prop: 'foo'}, stuff: $data" />

在组件中,我们有:

return function(params) {
    this.thing = params.thing;
    this.items = params.stuff.items;
    this.columns = [{key: 'one'}, {key: 'two'}];
})

1 个答案:

答案 0 :(得分:0)

$root引用viewmodel,而不是组件,使用$parents[]。从淘汰赛3.3开始,您也可以使用$component