3

コンストラクターを作成した WebComponent を作成しました。実行すると、このコンストラクターは呼び出されないように見えますが、残りのコンポーネントは機能しますが、カスタム コンストラクターの外部で作成する必要があります。これが私が話していることの例です。

<element name="x-navigation" constructor="Navigation" extends="div">
    <template>
        <div>{{items}}</div>
    </template>
    <script type="application/dart">
        import 'package:web_ui/web_ui.dart';

        class Navigation extends WebComponent {
          List<String> items = new List<String>();
          Navigation() {
              items.add("Hello");
          }
        }
    </script>
<element>

このコンポーネントを含めると、作成したコンストラクターが呼び出されていないかのように、出力は空のリストになります。少なくとも "Hello" 文字列の出力があるはずですが、そうではありません。この方法で作成されたコンストラクターは無視されますか、それとも何か見逃していますか?

4

2 に答える 2

11

最新バージョンのWebUIはコンストラクターを呼び出すようになり、createdライフサイクルメソッドも利用できるようになりました。

次のコードは、両方のhelloを追加しています。

<element name="x-navigation" constructor="Navigation" extends="div">
  <template>
    <div>{{items}}</div>
  </template>

  <script type="application/dart">
    import 'package:web_ui/web_ui.dart';

    class Navigation extends WebComponent {
      List<String> items = new List<String>();

      Navigation() {
        items.add("Hello first");
      }

      created() {
        items.add("Hello second");
      }
    }
  </script>
<element>

ライフサイクルメソッドに関する記事を読むことをお勧めします:http ://www.dartlang.org/articles/dart-web-components/spec.html#lifecycle-methods

ライフサイクルメソッド

created() -コンポーネントが作成された後に少し呼び出されます。

insert() -コンポーネントがDOMに追加されるたびに呼び出されます。

attributeChanged() -コンポーネントの属性が変更されるたびに呼び出されます。

remove () -コンポーネントがDOMから削除されるたびに呼び出されます

于 2012-12-19T16:01:20.943 に答える
1

クラスに次のメソッドを追加します。

created() {
   items.add("Hello");
 }
于 2012-12-19T15:50:49.137 に答える