我有一个自定义元素,如下所示:
<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 文件中定义的属性,但嵌套模板不能。
我通过在此处设置自定义绑定委托阅读了有关在模板中将变量设置为全局变量的信息。但是,我无法将自定义元素中的 bindingDelegate 设置为isTemplate
返回 false。
有没有其他方法可以在自定义模板中设置全局变量?还是我对这一切都错了?