Dojo学习笔记(二十):理解_WidgetBase-阿里云开发者社区

开发者社区> 技术小胖子> 正文

Dojo学习笔记(二十):理解_WidgetBase

简介:
+关注继续查看

如果你使用过dojo早期的版本,你可能对dijit/_Widget模块熟悉。虽然dijit/_Widget目前仍然存在,但是它经继承自_WidgetBase。在你从底层开始创建自定义小部件的时候,目前最好是直接继承_WidgetBase,dijit/_Widget很可能在2.0的版本中被淘汰掉

理解Dijit系统的关键在于对小部件的生命周期的理解,小部件生命周期是从一个小部件被设计到这个小部件能够被你的应用程序完全可引用,一直到小部件和dom元素的销毁。

_Widget_WidgetBase类前面都有一个“_”,表示这些类不能直接实例化使用,只能被用作declare声明类的基类。

每个以_WidgetBase作为父类的小部件在实例化过程中都要调用几个方法,下面是这些方法调用的顺序列表:

  • constructor     (实例化时调用的公共属性)

  • postscript     (声明时调用的公共属性)

    • postMixInProperties读入用户定义的属性

    • buildRendering(创建 _WidgetBase.domNode

    • postCreate(此函数被触发时, _WidgetBase.domNode已经被创建好了, 但是并不一定已经被连接到页面的 DOM 结构中所以, 此函数内最好不要执行       place 定位, 以及计算DOM Node占页面尺寸等相关操作)

    • create

  • startup

这些方法用来处理如下一些事务:

  • 定义小部件初始值;

  • 为小部件生成DOM结构的可视化表示;

  • 在页面内放置在小部件的DOM结构;

  • 何时处理小部件与文档对象中DOM节点的逻辑依赖关系,例如DOM节点的尺寸;

postCreate()方法

         在小部件的DOM准备好并插入到页面后,调用此方法。对于一个开发者来说,在这个小部件呈现在用户面前之前,这个方法是你执行最后的一些修改的主要地方,例如设置一些自定义属性等等。在开发一个自定义小部件的时候,大多数自定义信息会写在这个方法里,但不是全部。如果小部件中包含子小部件,若需要访问子小部件,需要使用startup()方法。

startup()方法

Dijit生命周期里,可被认为是第二重要的方法是startup方法。当小部件及其子小部件被创建好之后,调用该方法。若小部件是通过声明方式创建的,startup方法是通过dojo/parser方法自动调用的。倘若小部件是由编程方式创建的,必须调用startup()方法。

Tear-down方法

除了实例化方法之外,dijit/_WidgetBase还定义了一些销毁函数,下面按被调用的顺序列出:

  •    destroyRecursive(销毁小部件条目及子小部件)

    • uninitialize(需要自定义销毁时,可以覆盖此方法)

    • destroyRendering(清理小部件呈现条目)

    • destroyDescendants(销毁所有子小部件)

    • destroy(销毁所有小部件条目,但不包括子小部件)

当你在编写自定义小部件的时候,销毁操作要写在destroy()方法里,记得不要忘记调用this.inherited(arguments)dijit本身已经为你监测文档节点和大部分对象,可以用上述销毁方法来处理过时的对象和节点。

尽管destroy()方法是小部件的主要的销毁方法,但是当你想彻底地销毁一个小部件包括它的子小部件的时候,你应该调用destroyRecursive(),这将确保销毁这个小部件及其它的子元素。


http://dojotoolkit.org/documentation/tutorials/1.10/understanding_widgetbase/




     本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1576212,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HTML标签 -base标签|学习笔记
快速学习HTML标签 -base标签
24 0
手把手教你数据不足时如何做深度学习NLP
还在发愁没有数据做深度学习,看看别人如何实现的把!
2316 0
HBase数据结构(读书笔记 )
背景:      最近在做一些跟大数据相关的东西,涉及到数据的存储和分析,考虑各个方面,选择使用HBase进行存储,使用原生Java API进行数据分析,之后会陆续写一系列来说明最近做的东西,给像我这样未曾涉及过这个领域的人一点儿idea。
1151 0
手机淘宝短视频业务「哇哦视频」迁移上 FaaS 笔记公开
在看了那么多“技术原理/顶层设计/平台建设”相关的文章之后,我相信你对 FaaS 肯定产生过跃跃欲试的感觉,但也肯定存在诸多疑惑。关于这些疑惑,经过了这四个月的考验,我想我已经有了自己的答案。接下来我将会向大家分享我这四个月的历程,带大家一起看看,在一名一线业务同学的眼中,FaaS 究竟会给前端同学带来什么?
341 0
《JavaScript高级程序设计(第3版)》阅读笔记
第6章 面向对象的程序设计 6.2 创建对象 6.2.1 工厂模式 JavaScript创建对象(一)—— 工厂模式 6.
833 0
21119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载