0
ネストされたforeach内からルートレベルのプロパティにアクセスしようとしています。knockout:ネストされた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
はfalseと評価されています。私も$parent[1].thing
を試しました。それで私は$root
と$parent[1]
がこのケースでは同等だと思っていたので、私にバインドエラーMessage: Cannot read property 'thing' of undefined
が奇妙です。
EDIT:このコードはコンポーネントの一部です。ビューでは、それはこのようなものになります。コンポーネントで
<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'}];
})
rootに相当する '$ parents [1]'にする必要があります。 '$ parents [1] .thing'はまだfalseなので、これはあなたの問題に答えることはできません。あなたのviewmodelのようなコードが(すべてではないが)より多く表示されることは役に立ちます。 – Adrian
私はさらにコードを追加しました –
実際、 '$ parents [1] .thing'は動作しますが、なぜ' $ root'が動作しないのか知りたいです。それがコンポーネントなのか? –