1

我想全面了解事件在 Dojo 中的运作方式。我实际上对 Dojo 2.0 的工作方式很感兴趣——我现在使用的是 1.8,但我只对使用/记录不会在 2.0 中弃用的功能感兴趣。现在......在 _WidgetBase.js 我读到:

on: function(/*String|Function*/ type, /*Function*/ func){
  // For backwards compatibility, if there's an onType() method in the widget then connect to that.
                // Remove in 2.0.

这基本上意味着在不久的将来,一个小部件基本上会做:

  on: function(/*String|Function*/ type, /*Function*/ func){
            // Otherwise, just listen for the event on this.domNode.
            return this.own(on(this.domNode, type, func))[0];

这很好。现在......在 1.8 的发行说明中,我看到:

“小部件事件,包括属性更改,作为 DOM 树上的事件发出”

发行说明指出这一点:http ://livedocs.dojotoolkit.org/quickstart/events#widget-events-published-to-the-dom尽管该文档似乎已经过时(它仍然谈论“普通对象”的方面)。

所以,我的问题是:是否有一个点/一堆页面/票可以描述整个事件工作的当前更新方式?

我目前的理解(对于 Dojo 2.0):

  • on:100% 委托给 on.js
  • 发射:当你运行 randomWidget.on('something', function(){}): -如果 randomWidget 有'onsomething',它会简单地运行它;<--- 这会随着 2.0 消失吗?- 否则,它将委托给 on()

所以,一切都是为了理解dojo/on。那是我感到困惑的时候:阅读源代码,on.js 似乎将功能委托给小部件本身(...我刚刚在上面写过,将简单地从 2.0 委托给 dojo/on ......?!?)。除非委托给对象的位注定要消失……?

此外,我习惯于使用模板编写小部件,然后在我执行 data-dojo-attach-event="onclick:_click" 的地方添加项目,以确保在有人点击它时调用一个函数。使用新的 on() 系统,这会改变吗?(我的意思是,是否所有事件都传播到 DOM,反之亦然吗?)

那么,有人可以对此有所了解吗?我现在感觉有点不安,添加事件和做事,因为我不是 100% 确定发生了什么。

谢谢!

4

1 回答 1

1

天哪,那是前一阵子......从那时起,我写了这个:

https://github.com/mercmobily/writeups/blob/master/dojo/widgets_containers_on.md

这几乎解释了一切!

默克。

于 2013-03-18T22:33:27.107 回答