如何在 jQuery UI 小部件中的 _init 和 _create 之间做出决定?

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

I think I understand the difference between _create and _init in widget definitions (see for instance this question), but I'm still not certain about the purpose for the distinction. What sorts of setup tasks go in _create() or in _init()? What goes wrong if the widget author chooses the wrong one?

推荐答案

来自:

  • http://forum.jquery.com/topic/jquery-ui-1-8-use-of-init
  • http://www.erichynds.com/jquery/tips-for-开发-jquery-ui-widgets/
  • http://jqueryui.com/demos/dialog/

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

Use _create to build and inject markup, bind events, etc. Place default functionality in _init(). The dialog widget, for example, provides an autoOpen parameter denoting whether or not the dialog should be open once the widget is initialized; a perfect spot for _init()!

还有:

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

The widget factory automatically fires the _create() and _init() methods during initialization, in that order. At first glance it appears that the effort is duplicated, but there is a sight difference between the two. Because the widget factory protects against multiple instantiations on the same element, _create() will be called a maximum of one time for each widget instance, whereas _init() will be called each time the widget is called without arguments...

如果作者在 _create() 应该被编码时使用 _init(),结果将是 _init() 将在每个小部件实例化时执行一次.

If the author uses _init() when _create() should have been coded, the result will be that the code in _init() will be executed once per widget instantiation.

相关文章