dart - 将另一个框架与 polymer dart 1.0 集成

标签 dart dart-polymer

如果这有点模糊,我们深表歉意。

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

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

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

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

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

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

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

最佳答案

Is it likely to be inefficient to listen to all (*) events like this?

不幸的是,全局 * 事件实际上不受支持,路径必须以属性名称开头。您可以使用 properties getter 来为所有属性设置手动监听器。

Is there a lower level way to register more specific paths that avoids the need for the Observe annotation.

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

可能还有其他一些 hack 可以动态添加常规观察者,但我并不知道它们:)。

Is using the PolymerRegister annotation the best way to register the components in this case? Is there lower level API to do it instead?

这是目前唯一的方法,但如果您想控制注册发生的时间,您只需创建一个 const PolymerRegister(...) 对象并调用 initialize只要你的心想要就可以了。如果您愿意,请为真正的命令式 API 提交功能请求。

关于dart - 将另一个框架与 polymer dart 1.0 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987414/

相关文章:

dart - Dart 导入包:polymer/polymer.dart错误

flutter - 如何在 Dart 中向 Map 添加新对?

flutter - 如何修复此错误 Task 'assembleAarRelease' not found in root project 'flutter_plugin_android_lifecycle' .?

firebase - Flutter & Firestore - 更新永不停止(从一个值切换到另一个值)

oop - this.field 构造函数参数列表和继承字段的语法糖。

data-binding - Dart Polymer:从列表中删除元素

dart - 在聚合物行为中调用super.attached()时如何避免警告

dart - 如何创建带有 polymer Dart 的自定义ul元素,当添加 child 时,该元素会触发添加事件和删除事件?

android - 从一个页面导航到另一个页面时如何暂停抖动视频(video_player 插件)

dart - 映射为自定义元素的已发布属性