我一直在使用的用例是我有一些标记如下。
<my-radiolist value="{{myValue}}">
<template is="dom-repeat" items="{{test}}">
<my-radiobutton value="{{item}}" label="{{item}}"></my-radiobutton>
</template>
</my-radiolist>
当测试被定义为:
@property List<int> test = [1,2,3];
它运作得很好。
现在,我希望通过循环更复杂的对象来填充此列表。我想让它计算,然后执行给定的函数。我更新样本如下:
@Property(computed:"getTest()")
List<Map> test = null;
@reflectable
List<Map> getTest() {
print("Inside my getTest Function");
return [{"key": "test", "value": "test"}, {"key":"test 2","value":"test 2"}];
}
我注意到我的print语句从未触发过,所以我的属性有我的默认值,这意味着没有任何东西可以迭代。
我以前做过这些,但不是模板转发器。有什么我做错了吗?
我的想法是,因为在更新参数时计算更新,并且因为我没有使用任何参数,所以在这种情况下使用计算属性不是我应该采取的行动。
答案 0 :(得分:1)
该值被解释为方法名称和参数列表。每当任何参数值发生变化时,都会调用该方法来计算该值。永远不应直接写入计算属性。有关详细信息,请参阅计算属性。
当没有参数时,我认为计算属性无论如何都没有意义。
另见https://github.com/dart-lang/polymer-dart/wiki/properties#computed-properties