26

위젯 정의에서 _create_init의 차이점을 이해하고 있다고 생각합니다. (예를 들어 this question을 참조하십시오.) 목적에 대해서는 아직 명확하지 않습니다. 차이점은입니다. 어떤 종류의 설치 작업이 _create() 또는 _init()에 들어 있습니까? 위젯 제작자가 잘못된 것을 선택하면 잘못 될 수 있습니다. 에서jQuery UI 위젯에서 _init와 _create 사이를 결정하는 방법은 무엇입니까?

답변

33

:

사용 _create 구축하고 등 마크 업, 바인드 이벤트, _init()에 기본 기능 배치를 주입합니다. 대화 위젯은, 예를 들면, 위젯은 가 초기화되면 대화 개방되어야하는지 여부를 나타내는 파라미터 autoOpen 을 제공한다; _init()에 대한 완벽한 자리! 또한

:

위젯 공장은 자동으로 순서대로 초기화하는 동안 _create()_init() 방법 발생합니다. 언뜻보기에는 노력이 중복 된 것으로 보입니다. 그러나 두 사람 사이에는 시차가 있습니다. _init()이 위젯이 인수없이 호출 때마다 호출되는 반면 위젯 공장이 같은 요소에 여러 인스턴스 생성에 대한 를 보호하기 때문에, _create() 될 것 각 위젯 예를 들어 한 번에 최대라고 ...

저자 _create() 부호화 된시기 _init()

사용하는 경우에는, 그 결과의 코드 _init() 위젯이 인스턴스화 번씩 실행되도록 할 것이다. 여기

+0

위젯에 대한 * call * 당 한 번 :-) 어쨌든, 두 번째 링크는 (이 문제와 다른 문제에서) 매우 중요합니다. 내가 그것을 놓쳤던 방법을 몰라. 감사합니다! –

4

짧은 답변 : 당신이 $ xx.your - 플러그인과 같은 (옵션)을 처음으로 JQuery와 - UI 플러그인을 실행할 때 _create()가 실행됩니다; 코드가 $ xx.your-plugin (옵션)으로 실행될 때 처음으로 인 경우 _init()가 처음 실행되고 이 실행됩니다.

이 같은 JQuery와 - ui.custom.js에서 일부 코드가로 :

var instance = $.data(this, fullName); 
if (instance) { 
    instance.option(options || {})._init(); 
} 

그래서 그것이 밖으로 그려 후, JQuery와 - UI를 플러그인 차트을 그릴 경우, 다음 원하는 으로 새 데이터를 사용하여으로 업데이트하려면 차트를 업데이트하려면 _init()에서이 작업을 수행해야합니다. 무언가를 표시하고 완전히 업데이트하지 않으면 _create()가 사용자의 요구를 충족시킵니다.