【发布时间】:2015-04-15 17:44:32
【问题描述】:
在模板 repeat 内创建的绑定是否需要聚合物元素上的关联属性,我认为它们绑定到 ObservableList 的数组项?
在我的模板中是以下代码:
<polymer-element name="event-details">
<template>
<!-- etc -->
<template repeat="{{artist in event.artist}}">
<artist-card artist="{{artist}}">
</template>
<!-- etc -->
</template>
<!-- etc -->
</polymer-element>
我的元素定义看起来像
@CustomTag('event-details')
class EventDetails {
/* etc */
@published
api.Event get event => readValue(#event);
set event(api.Event event) => writeValue(#event, value);
/* etc */
}
当我创建元素时,我得到了错误
"EventDetails has no attribute `artist`"
但我认为<template repeat> 中的artist 应该只存在于该模板的范围内。在元素的定义上使用{{artist}} 没有任何价值,因为它只会指向模板子项中的最后一个元素。
artists 是api.Event 对象上的ObservableList,尽管它是在不使用聚合物的情况下定义的。
【问题讨论】:
-
能否尝试将局部变量重命名为
repeat="{{a in event.artist}}"和artist="{{a}}"? -
Error evaluating expression 'a': Class 'EventDetails' has no instance setter 'a='. -
接下来我会尝试一个简单的字段
@published api.Event event;,而不是 readValue/writeValue。 -
不,仍然出现同样的错误。
-
将其更改为
<template repeat="{{a in event.artists}}">{{a}}</template>会消除错误,因此它可能与artist在artist-card中是@published的事实有关。
标签: dart polymer dart-polymer