注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

dijit widgets的生命周期  

2014-01-05 17:09:45|  分类: Javascript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
dijit 生命周期
  • constructor (common to all prototypes, called when instantiated)
  • postscript (common to all prototypes built using declare)
    • create
      • postMixInProperties
      • buildRendering
      • postCreate
  • startup

constructor方法:
当类实例化时被调用
postscript方法:
在所有的constructor方法调用完成之后调用(参见declare.js中的代码注释: calling postscript() after all constructors were executed.)

create方法:
在postscript中调用(参见_WidgetBase类中的代码)参考代码(默认最后一个参数是srcNode)

postscript: function(/*Object?*/params, /*DomNode|String*/srcNodeRef){
// summary:
// Kicks off widget instantiation. See create() for details.
// tags:
// private
// Note that we skip calling this.inherited(), i.e. dojo/Stateful::postscript(), because 1.x widgets don't
// expect their custom setters to get called until after buildRendering(). Consider changing for 2.0.
this.create(params, srcNodeRef);
},

postMixInProperties方法:
按照字面理解混入参数, 参考代码(将传入的参数混入之后,所进行的混入,这时候你可以加入自己的参数,将其混入this对象)

// mix in our passed parameters
if(params){
this.params = params;
lang.mixin(this, params);
}
this.postMixInProperties();

buildRendering方法:
创建widget的UI,但是大部分widget等候使用dijit templete创建,所以dijit._TemplatedMixin`, 该类 implements this method.

postcreate方法:
指在dom结构创建完成后,还没有append到文档树上的时候调用,他是一个非常重要的方法,在继承现有组件对其扩展的工作,一般都在这里进行。
注意: 对于这里所做的事件注册,dom节点创建,一定要在uninitialize或destroyRendering中销毁,防止内存泄露。

startup方法:
在dom结构添加到文档树后调用(参见代码注释 Processing after the DOM fragment is added to the document)
在建立了一个父组件后,还需要添加若干子组件(这里的子组件不是表示继承关系,而是表示包含关系),并希望全部加载后一起展现时,就可以调用该函数。
 
destroy的方法(_WidgetBase通过继承 Destroyable实现)
  • destroyRecursive
    • destroyDescendants
    • destroy
      • uninitialize
      • destroyRendering

注意: 当我们方法
(除constructor方法外)需要覆盖的父类方法情况下,是必须继承执行父类的该函数,例如:  
     postCreate: function() { 
         this.inherited(arguments); 
    } 

参考资料:
http://blog.csdn.net/lfsfxy9/article/details/7385669
http://bbs.csdn.net/topics/310101920
http://dojotoolkit.org/reference-guide/1.9/quickstart/writingWidgets.html
http://dojotoolkit.org/reference-guide/1.9/dijit/_WidgetBase.html
http://dojotoolkit.org/documentation/tutorials/1.9/understanding_widgetbase/
 
  评论这张
 
阅读(194)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017