将另一个框架与聚合物飞镖1.0

时间:2015-10-07 08:32:16

标签: dart dart-polymer

如果这有点模糊,请道歉。

我有自己的基于FRP的库来构建我的应用程序模型。它有一个components的概念,其state通过Stream更改。

这封装了UI的行为减去实际的视图。我开始将它与Polymer 1.0集成,并希望获得一些指导作为最佳方法。

有些事情很简单(例如将模型中字段的更改绑定到notifyPath)。

对于更新,我考虑使用带有Observe注释的单一方法,例如

@Observe('*')
void myHandler(Map changeRecord) => ... delegate to my adapters

听这样的所有(*)事件是否可能效率低下?是否有更低级别的方法来注册更具体的路径,以避免需要Observe注释?

在这种情况下,使用PolymerRegister注释是注册组件的最佳方法吗?是否有较低级别的API来代替它?

1 个答案:

答案 0 :(得分:2)

  

听这样的所有(*)事件是否可能效率低下?

遗憾的是,实际上不支持global *事件,路径必须以属性名称开头。您可以创建一个使用properties getter在所有属性上设置手动侦听器的行为。

  

是否有更低级别的方法来注册更多特定路径,以避免需要观察注释。

listen(Node element, String eventName, String methodName)方法。您只需将this作为节点传递即可收听{{property}}-changed个事件。您需要确保所有属性都有notify: true,以便触发事件。由于它使用实际事件而不是观察者使用的魔术钩,因此效率也会降低一些。

可能还有其他一些黑客可以动态添加常规观察者,但我不知道它们是不是我的头脑。)。

  

在这种情况下,使用PolymerRegister注释是注册组件的最佳方法吗?是否有较低级别的API来代替它?

这是今天唯一的方法,但如果您想控制注册何时发生,您可以创建一个const PolymerRegister(...)对象,并在您心愿的时候调用initialize。如果您愿意,请提交真实命令api的功能请求。