2010-12-14

jQuery UI Widget _setOption

jQuery UI widget 은 기본적으로 한번에 여러 개의 옵션을 설정할 수 있다.

$('...').somewidget('option',{aa:bb, cc:dd});

하나의 옵션을 설정할 때의 추가적인 로직을 넣으려면 _setOption() 을 재정의하면 된다.

_setOption: function(key,value){
  if(key=='some'){...do something...}
}

가끔은 여러 개의 옵션을 한번에 설정할 때, 그 중 몇몇 옵션이 바뀔 경우에 대한 추가적인 로직을 넣으려면 _setOptions 를 재정의하면 된다. jQuery UI Dialog 의 코드가 가장 좋은 예제일 것이다. 다만 1.8.6 부터 지원하니까 버전에 주의하길.

_setOptions: function( options ) {
  var self = this,
  resizableOptions = {},
  resize = false;

  $.each( options, function( key, value ) {
  self._setOption( key, value );

  if ( key in sizeRelatedOptions ) {
  resize = true;
  }
  if ( key in resizableRelatedOptions ) {
  resizableOptions[ key ] = value;
  }
  });

  if ( resize ) {
  this._size();
  }
  if ( this.uiDialog.is( ":data(resizable)" ) ) {
  this.uiDialog.resizable( "option", resizableOptions );
  }
},

comments powered by Disqus