【发布时间】:2011-06-01 18:25:27
【问题描述】:
我想我理解小部件定义中_create 和_init 之间的区别(例如参见this question),但我仍然不确定区别的目的。 _create() 或 _init() 中有哪些类型的设置任务?如果widget作者选错了会出现什么问题?
【问题讨论】:
标签: javascript jquery jquery-ui jquery-plugins jquery-ui-plugins
我想我理解小部件定义中_create 和_init 之间的区别(例如参见this question),但我仍然不确定区别的目的。 _create() 或 _init() 中有哪些类型的设置任务?如果widget作者选错了会出现什么问题?
【问题讨论】:
标签: javascript jquery jquery-ui jquery-plugins jquery-ui-plugins
简答在这里: _create() 将在您第一次运行 jquery-ui 插件时执行,例如 $xx.your-plugin(your options); _init() 将在您的代码运行到 $xx.your-plugin(your options) 时先和后第一次执行;
因为 jquery-ui.custom.js 中有这样的代码:
var instance = $.data( this, fullName );
if ( instance ) {
instance.option( options || {} )._init();
}
所以,如果你用jquery-ui插件绘制图表,在绘制出来之后,你想使用新的数据来更新它,你需要做这在 _init() 更新您的图表。 如果您只是显示某些内容而不完全更新它们,_create() 将满足您的需求。
【讨论】:
发件人:
使用
_create构建和注入 标记、绑定事件等放置_init()中的默认功能。 对话框小部件,例如, 提供了一个autoOpen参数 表示对话框是否 小部件打开后应该打开 初始化;一个完美的地方_init()!
还有:
小部件工厂自动触发
_create()和_init()方法 在初始化期间,按此顺序。 乍一看似乎 努力是重复的,但有一个 两人的视线差异。 因为小部件工厂保护 针对多个实例化 相同的元素,_create()将是 每次最多调用一次 小部件实例,而_init()将 每次小部件被调用 不带参数调用...
如果作者在应该对_create() 进行编码时使用_init(),则结果将是_init() 中的代码将在每个小部件实例化时执行一次。
【讨论】: