【问题标题】:How to decide between _init and _create in jQuery UI widget?如何在 jQuery UI 小部件中的 _init 和 _create 之间做出决定?
【发布时间】:2011-06-01 18:25:27
【问题描述】:

我想我理解小部件定义中_create_init 之间的区别(例如参见this question),但我仍然不确定区别的目的_create()_init() 中有哪些类型的设置任务?如果widget作者选错了会出现什么问题?

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-plugins jquery-ui-plugins


    【解决方案1】:

    简答在这里: _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() 将满足您的需求。

    【讨论】:

      【解决方案2】:

      发件人:

      使用_create 构建和注入 标记、绑定事件等放置 _init() 中的默认功能。 对话框小部件,例如, 提供了一个autoOpen 参数 表示对话框是否 小部件打开后应该打开 初始化;一个完美的地方 _init()!

      还有:

      小部件工厂自动触发 _create()_init() 方法 在初始化期间,按此顺序。 乍一看似乎 努力是重复的,但有一个 两人的视线差异。 因为小部件工厂保护 针对多个实例化 相同的元素,_create() 将是 每次最多调用一次 小部件实例,而 _init() 将 每次小部件被调用 不带参数调用...

      如果作者在应该对_create() 进行编码时使用_init(),则结果将是_init() 中的代码将在每个小部件实例化时执行一次。

      【讨论】:

      • 好吧,每次调用到小部件一次 :-) 无论如何,第二个链接是无价的(在这个问题和其他问题上);不知道我是怎么错过的。非常感谢!
      猜你喜欢
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 2013-12-30
      • 2021-01-11
      • 2022-01-06
      • 1970-01-01
      • 2017-07-25
      相关资源
      最近更新 更多