【问题标题】:why am I getting type error on polymer.dart element?为什么我在 polymer.dart 元素上出现类型错误?
【发布时间】:2014-11-11 23:43:17
【问题描述】:

我有一些代码:

// main.dart:
void main{
  initPolymer();
  var view = new ChatAppConsumer();
}

//chat_app.dart
@CustomTag('chat-app')
class ChatApp extends PolymerElement{
  ChatApp.created():super.created();
}

class ChatAppConsumer{
  final ChatApp view = new Element.tag('chat-app');
}

据我所知,我已正确引用了所有文件,并且在尝试创建自定义标记之前调用了 initPolymer();,但我得到了由 new Element.tag('chat-app'); is not of typeChatApp` 返回的 HtmlElement 的类型错误,但我使用我拥有的另一个包中的这个完全相同的模式,它在那里完美地工作。以前有人遇到过这样的事情吗?

【问题讨论】:

    标签: dart dart-polymer


    【解决方案1】:

    initPolymer 还不够,你应该将闭包传递给initPolymer.run(() => ...),它会执行你的 Polymer 相关代码。

    详情请见how to implement a main function in polymer apps

    = 聚合物 0.16.0 // main.dart: 无效的主要{ initPolymer().then((zone) => zone.run(() { var view = new ChatAppConsumer(); })); }

    // main.dart:
    void main{
      initPolymer().run(() {
        var view = new ChatAppConsumer();
      });
    }
    

    【讨论】:

    • 我会在之前给出这个,但我不认为它是必要的,因为我做了完全相同的事情 here 和你可以看到 it works
    • 这是一个计时问题,并非在所有配置中都会出现,但为了确保正确的计时,您绝对应该这样做。据我所知,这在作为 JavaScript 运行之前不会引起问题。 Polymer 初始化经常从一个 Polymer 版本更改为下一个版本,因此这可能在一个版本中有效,但在下一个版本中无效。我对这个问题没有太多经验,因为我要么在 Polymer 应用程序中根本不使用自定义 main(),要么在必要时确保正确初始化(请参阅我的答案)。
    • 顺便说一句,如果 .run(()=>) 应该在 init 完成后运行,这似乎就像一个未来,所以他们没有选择只使用 .run(()=>) 似乎很奇怪。 then(()=>),嗯,谢谢解答
    • 我想知道同样的事情,但没有调查或询问。也许他们选择这种形式是因为它在 Polymer.js 中很相似(不知道它是否真的如此),或者可能是因为在您传递的闭包执行后必须运行一些代码(怀疑)。
    猜你喜欢
    • 2022-06-21
    • 2021-10-18
    • 1970-01-01
    • 2019-10-25
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2022-01-23
    相关资源
    最近更新 更多