抱歉,如果这有点模糊。
我有自己的基于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。