如果这有点模糊,请道歉。
我有自己的基于FRP的库来构建我的应用程序模型。它有一个components
的概念,其state
通过Stream
更改。
这封装了UI的行为减去实际的视图。我开始将它与Polymer 1.0集成,并希望获得一些指导作为最佳方法。
有些事情很简单(例如将模型中字段的更改绑定到notifyPath
)。
对于更新,我考虑使用带有Observe
注释的单一方法,例如
@Observe('*')
void myHandler(Map changeRecord) => ... delegate to my adapters
听这样的所有(*)事件是否可能效率低下?是否有更低级别的方法来注册更具体的路径,以避免需要Observe
注释?
在这种情况下,使用PolymerRegister
注释是注册组件的最佳方法吗?是否有较低级别的API来代替它?
答案 0 :(得分:2)
听这样的所有(*)事件是否可能效率低下?
遗憾的是,实际上不支持global *事件,路径必须以属性名称开头。您可以创建一个使用properties
getter在所有属性上设置手动侦听器的行为。
是否有更低级别的方法来注册更多特定路径,以避免需要观察注释。
有listen(Node element, String eventName, String methodName)
方法。您只需将this
作为节点传递即可收听{{property}}-changed
个事件。您需要确保所有属性都有notify: true
,以便触发事件。由于它使用实际事件而不是观察者使用的魔术钩,因此效率也会降低一些。
可能还有其他一些黑客可以动态添加常规观察者,但我不知道它们是不是我的头脑。)。
在这种情况下,使用PolymerRegister注释是注册组件的最佳方法吗?是否有较低级别的API来代替它?
这是今天唯一的方法,但如果您想控制注册何时发生,您可以创建一个const PolymerRegister(...)
对象,并在您心愿的时候调用initialize
。如果您愿意,请提交真实命令api的功能请求。