以下のようなカスタム要素があります。
<polymer-element>
<template if="{{primaryLoaded}}">
<template repeat="{{pData in primaryData}}">
<p>{{pData.propertyOne}}</p>
<p>{{someClass.someOperation()}}</p>
<template if="{{secodaryLoaded}}">
<p>{{secondaryData.someProperty}}</p>
<p>{{someClass.someOperation()}}</p>
</template>
</template>
</template>
</polymer-element>
および対応するダーツ ファイル:
class CustomElement extends PolymerElement with ObservableMixin
{
@observable bool primaryLoaded = false;
@observable bool secondaryLoaded = false;
@observable var primaryData;
@observable var secondaryData;
@observable var someClass;
void created()
{
primaryData = toObservable(new List<var>());
secondaryData = toObservable(new List<var>());
}
void inserted()
{
someClass = new SomeClass();
loadPrimaryData().then((pData) {
primaryData = pData;
primaryLoaded = true;
loadSecondaryData().then((sData) {
secondaryData = sData;
secondaryLoaded = true;
});
});
}
}
すべてが正常に動作しprimaryData
ます。someOperation()
そのプロパティが出力され、 onの呼び出しによってsomeClass
そのデータが正しく出力されます。
問題はネストされたテンプレートにあります。の下には何も<template if="{{secondaryLoaded}}">
表示されません。への呼び出しでさえ、someClass.someOperation()
何も表示できません。
ここでスコープに問題はありますか?外側のテンプレートは dart ファイルで定義されたプロパティを問題なく参照できるように見えますが、ネストされたテンプレートは参照できません。
ここで、カスタム バインディング デリゲートを設定して、テンプレートで変数をグローバルとして設定する方法について読みました。ただし、false を返すため、カスタム要素に bindingDelegate を設定できませんisTemplate
。
カスタム テンプレートでグローバル変数を設定する他の方法はありますか? それとも、私はこれについてすべて間違っていますか?