Polymer Dart @initMethod没有执行

时间:2014-05-03 20:50:41

标签: dart dart-polymer

我正在摆弄聚合物飞镖0.10.0-pre.10的“新”说明,只是意识到我安装了包0.9.5(在更新的Dart编辑器上)。并且只能使用main() => dostuff();运行代码根据instructions添加component1只是破坏了所有工作。

我将pubspec.yaml聚合物依赖关系设置为>= 0.9.9,并且auto pub获取版本0.10.0-pre.10。然后,我按照建议进行了更改,并将dostuff()移至自定义元素类(extends PolymerElement)并将@initMethod置于其上方。它没有运行。

在我无法找到将JSON文件中的新项目(我通过http成功通过http)绑定到聚合物元素之前,我运行它。

mylist.dart

import 'package:polymer/polymer.dart';
import 'dart:html';

@CustomTag('my-list')
class MyListElement extends PolymerElement {

  @observable List mylist = ['one', 'two', 'three'];

  @initMethod
  static dostuff() {
    print("initMethod");
    // get json and pass to mylist
  }
}

mylist.html

<polymer-element name="my-list">
  <template>
    <ul>
      <template repeat="{{item in mylist}}">
        <li>{{item}}</li>
      </template>
    </ul>
  </template>
  <script type="application/dart;component=1" src="mylist.dart"></script>
</polymer-element>

的index.html

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sample app</title>
    <link rel="import" href="packages/polymer/polymer.html">
    <link rel="import" href="mylist.html">
    <script src="packages/browser/dart.js"></script>
  </head>
  <body>
    <h1>MyList</h1>

    <div id="container1">
      <json-list id="my-list1"></json-list>
    </div>
  </body>
</html>

1 个答案:

答案 0 :(得分:2)

元素中的此代码(尤其是@initMethod)没有意义。 @CustomTag('my-list')已经这样做了。只有当您希望执行类似@initMethod()的方法在Polymer元素之外时,才需要main()

您可以在超级调用之前将此代码放在MyListElement或更好的polymerCreated内部的构造函数中。

import 'package:polymer/polymer.dart';
import 'dart:html';

@CustomTag('my-list')
class MyListElement extends PolymerElement {

  @observable List mylist = ['one', 'two', 'three'];

  @override
  polymerCreated() {
    print("initMethod");
    // get json and pass to mylist
    super.polymerCreated();
  }
}

您没有获得Polymer 0.10.0-pre.10,因为它是预发布版本,在修补程序版本之后由-表示(而不是pre)。 Pub默认忽略预发布。您必须通过'>=0.10.0-'

等版本约束来强制执行它们