티스토리 툴바


블로그 이미지
카라크라스

Leon.Kim의 공부하는 블로그입니다. mail - kalaklas@gmail.com twitter - @kalaklas

Rss feed Tistory
Web/Javascript 2010/10/21 11:43

jQuery widget 에 관하여.


jQuery ui plugin들은 모두 jquery.ui.widget 즉 widget factory를 이용하여 개발되었다.


widget factory는 custom widget class를 만들수 있는 factory method를 제공한다.

jquery.ui.widget.js을 이용하여 custom ui widget class를 만들어 보고, 적용해보자.


아주 간단히 말해 jquery.widget 을 이용하여, 내 위젯을 만드는 방법은 
$.widget("ui.mywidget", {});
로 단축된다. 

widget factory
기본 메소드
  • destroy(): Removes the instance from the encapsulated DOM element, which was stored on instance creation
  • option(String key[, String value]): Gets or sets an option for this instance
  • enable(): Set disabled option to false, it's up to the instance to respect the option
  • disable(): Set disabled option to true, it's up to the instance to respect the option
기본 프로퍼티
  • options: The options for this widget instance, a mix of defaults with settings provided by the user
  • element: A jQuery object always containing a single DOMElement, which can be accessed with this.element[0].

내 위젯 내부에서 위의 메소드와 프로퍼티의 사용이 언제든 가능하여, override 가능하다.
default method를 상속(?실행? 자바로 치면 super클래스의 메소드를 수행고자 할때 . .)
$.Widget.prototype.methodToOverride.apply(this, arguments); // 아래 소스를 보면 widget protype의 destroy를 수행하는 모습을 볼수 있다.


* 간단하게 mybutton이라는 widget을 만들어 보았다.

widget factory은 자동으로 _create -> _init 순으로 메소드를 수행하는 cycle을 가지고 있다.
widget을 위한 custom method은 자유롭게 추가가 가능하다.

간단하게 mybutton이라는 위젯을 만들어 보았다.
편의상 css style등을 모두 내부에 포함하였다.

더보기



jquery.widget이 제공하는 widget factory를 이용하여 widget을 정의 할 경우 내부적으로

$.Widget.prototype을 override하여, 위젯이 정의된다.

$.Widget.prototype은 다음과 같은 구성으로 이루어져 있다.
소스코드에서 확인 할 수 있듯 _createWidget 메소드가 widget의 life cycle을 정의하고 있다.
_create() -> _init()
_create : 스타일, Node 생성, Event 정의등 widget을 정의하는 행위를 수행하는 메소드로서 오
버라이드 하자.
_init() : 위젯의 초기 상태를 지정하는 행위를 수행하는 메소드로서 오버라이드 하자.

상위 ($.Widget.prototype) 상속(?) 객체의 메소드 수행시
$.Widget.prototype.methodToOverride.apply(this, arguments); 와 같은 방식으로
apply 수행하면 된다.

widget() : 각 widget들은 모두 각각의 this.element 를 가지고 있는데, 이 element Node를
유용하게 return 받아 사용할 수 있다.

destroy : 이 메소드는 Widget을 제거 할 때(?) 수행할 메소드로서, 메모리 반납 (에를
들어 bind된 이벤트의 해지) 행위를 수행하면 된다.
==> $.Widget.prototype.destroy.apply(this, arguments); 수행

더보기






자신 만의 ui widget 을 jQuery.ui.widget이 제공하는 widget팩토리 메소드를 이용하여 만들어보자.

(아 항상 이렇게 어설픈 마무리 ㅠㅠ)


TOTAL 16,069 TODAY 57