当我将参数传递给Polymer元素时,核心样式 ref 无法解析。
这是子代码:
<link rel="import" href="packages/polymer/polymer.html">
<link rel="import" href="packages/core_elements/core_style.html">
<core-style id="s1" unresolved> div { background: yellow; } </core-style>
<core-style id="s2" unresolved> div { background: pink; } </core-style>
<polymer-element name='test-cell' attributes='s t' noscript>
<template>
<core-style ref="{{s}}"></core-style>
<div>{{t}}</div>
</template>
</polymer-element>
如您所见,有两种核心风格。
这是父代码。它需要一个List并实例化&#39; test-cell&#39;带有文字和样式参考。
<polymer-element name='test-rows'>
<template>
<template repeat='{{ v in x }}'>
<test-cell s={{v.s}} t={{v.t}}></test-cell>
</template>
</template>
</polymer-element>
在这个简单的例子中,Dart代码是内联的。这是:
<script type='application/dart'>
import 'package:polymer/polymer.dart';
//======================================
class Info {
String s, t;
Info(this.s, this.t) {}
}
//======================================
@CustomTag('test-rows')
class TestRows extends PolymerElement {
@observable List<Info> x = toObservable([]);
//-----------------------------------
TestRows.created() : super.created() {
x.add(toObservable(new Info('s1', 'first' )));
x.add(toObservable(new Info('s2', 'second')));
}
}
</script>
在生成的HTML中,文本通过OK,但核心样式的实例都有
ref="{{s}}"
并且未应用样式。我可以通过一些替代注释来强制解析样式参数吗?它本质上是一个final / const。
答案 0 :(得分:0)
我认为问题在于noscript
元素中的test-cell
据我所知,绑定在Dart中不适用于没有支持脚本(noscript
)的Polymer元素。
我认为在您的情况下<test-cell>
元素需要一个字段
@observable
var s;
使这项工作。
如果您曾为s
分配值,则不会显示您的代码。
我怀疑toObservable
适用于普通的Dart对象。据我所知,这是列表和地图。
Info
类应该如下所示,您不需要使用toObservable()
。
class Info extends Object with Observable {
@observable
String s;
@observable
String t;
Info(this.s, this.t) {}
}