【问题标题】:How do I get WebComponent classes to invoke my custom constructor?如何让 WebComponent 类调用我的自定义构造函数?
【发布时间】:2012-12-06 12:45:23
【问题描述】:

我创建了一个 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”字符串输出,但事实并非如此。以这种方式创建的构造函数是否被忽略了,还是我遗漏了什么?

【问题讨论】:

  • 这也发生在我身上,所以当它注意到我们不小心这样做时,我打开了一个错误以请求编译器提供更多反馈:github.com/dart-lang/web-ui/issues/272
  • @SeathLadd 这是个好主意,因为它让我安静了一会儿。

标签: dart dart-webui


【解决方案1】:

在类中添加以下方法:

created() {
   items.add("Hello");
 }

【讨论】:

    【解决方案2】:

    最新版的Web UI现在调用构造函数,还有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() - 在创建组件后稍微调用。

    inserted() - 每当将组件添加到 DOM 时调用。

    attributeChanged() - 每当组件中的属性更改时调用。

    removed() - 每当从 DOM 中移除组件时调用

    【讨论】:

    • 谢谢,为什么我创建的构造函数没有使用?
    • @JamesHurford 我相信这是因为他们需要在让您运行初始化代码之前进行一些处理。如果你看out目录和编译后的源代码,似乎是这样的。
    • Kai Sellgren 构造函数还是这样吗?我能够从扩展 WebComponent 的类创建构造函数。
    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 2010-12-06
    • 2017-09-07
    • 2015-03-15
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多