我想我理解了小部件定义中_create
和_init
之间的区别(例如参见this question),但我仍然不确定目的为了区别。 _create()
或_init()
中有哪些设置任务?如果小部件作者选择了错误的,会出现什么问题?
答案 0 :(得分:35)
自:
使用
_create
构建和注入 标记,绑定事件等。放置_init()
中的默认功能。 对话框小部件,例如, 提供autoOpen
参数 表示对话框是否存在 应该在小部件打开后打开 初始化;一个完美的地方_init()
!
此外:
小部件工厂自动触发
_create()
和_init()
方法 在初始化期间,按此顺序。 乍一看似乎是 努力是重复的,但有一个 两者之间的视力差异。 因为widget工厂可以保护 反对的多个实例 相同的元素,_create()
将是 每个人最多召唤一次 小部件实例,而_init()
将 每次小部件都被调用 没有参数呼叫......
如果作者在编码_init()
时使用_create()
,则结果将是每个小部件实例化时_init()
中的代码执行一次。
答案 1 :(得分:5)
简短回答此处: 当你第一次运行你的jquery-ui插件时会执行_create(),比如$ xx.your-plugin(你的选项); 当你的代码运行到$ xx.your-plugin(你的选项)时,_init()将首先执行并在第一次之后执行;
因为jquery-ui.custom.js中有一些代码如下:
var instance = $.data( this, fullName );
if ( instance ) {
instance.option( options || {} )._init();
}
所以,如果你用jquery-ui插件绘制图表,在它被抽出后,你想使用新数据来更新它,你需要做什么这在_init()中更新你的图表。 如果您只显示某些内容并且不会完全更新它们,_create()将满足您的需求。