抱歉,如果这有点模糊。

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

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

有些事情很容易(例如将对模型中字段的更改绑定(bind)到notifyPath)。

对于更新,我正在考虑使用带有Observe批注的单个方法,例如

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

像这样监听所有(*)事件可能效率不高吗?是否有较低级别的方法来注册更特定的路径,从而避免了Observe注释的需要?

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

最佳答案



不幸的是,实际上并不支持global *事件,该路径必须以属性名开头。您可以使用properties getter设置所有属性上的手动侦听器。



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

可能还有其他一些可以动态添加常规观察者的技巧,但我不知道这些是怎么回事:)。



这是当今唯一的方法,但是如果您想控制何时进行注册,则可以只创建const PolymerRegister(...)对象,并在需要时随时调用initialize。如果您愿意的话,请提交功能请求,以获取真正的命令式api。

09-26 14:08