【问题标题】:How to process elements added or removed from DOM by Dart Web UI template如何通过 Dart Web UI 模板处理从 DOM 中添加或删除的元素
【发布时间】:2013-05-27 21:55:13
【问题描述】:

在(最新的)Dart Web UI 中,当模板从 DOM 中添加或删除元素时,处理元素的最佳方式是什么?理想情况下,我想在模板中注册回调,但这不是必需的。

背景:我需要从两个 JS 库(其中一个是 JQuery 插件)中注册/注销某些 DOM 元素。由于我的模板使用循环和条件(以及数据绑定),因此元素可以随时来来去去,而且我不能只在初始渲染后注册它们。

【问题讨论】:

  • Peter,您是否使用 Web UI 生命周期方法来实现这一点?
  • 对不起,我把项目搁置了,因此没有取得进展。尽管如此,您的回答很有价值,经过更多研究,我相信这是解决这个问题的正确方法(尽管我仍然觉得它很奇怪)。因此,我很乐意接受您的回答。

标签: dart dart-webui


【解决方案1】:

可以向组件的类添加回调,这些回调在创建、插入 DOM 或从 DOM 中删除时触发。

Web UI Specification: Lifecycle Methods

class MyComponent extends WebComponent {

  inserted() {
    // Do stuff when inserted into DOM.
  }

  removed() {
    // Do stuff when removed from DOM.
  }
}

【讨论】:

  • JS 插件需要使用特定的元素类型(例如divul)。这是否意味着我需要扩展 DivComponent 之类的内容?这仍然会被 JS/CSS 识别为 div 吗?自定义 Web 组件感觉不太适合这种(据说很常见)需求,但如果它有效,那肯定比没有好。
  • 自定义组件必须声明为 div、段落或其他 HTML 元素的类型,然后使用您定义的类作为它的构造函数,所以我认为您会没事的。看看如何声明一个自定义组件...dartlang.org/articles/web-ui/#component-declaration,该示例使用 。这是我能想到的最简洁的跟踪插入和删除的方法,但是如果您的元素不容易组件化,希望还有另一种解决方案。
猜你喜欢
  • 1970-01-01
  • 2016-12-01
  • 2019-10-20
  • 1970-01-01
  • 2013-04-27
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多