Polymer Dart core-style ref未解决

时间:2014-11-20 04:52:21

标签: dart polymer dart-polymer

当我将参数传递给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。

1 个答案:

答案 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) {}
  }