2013-02-06 103 views
1

我正在創建一個小部件,並希望給它帶有一些值的defaults對象。我希望用戶允許更改它們,然後正常創建小部件(因此會使用新的默認值)。但用戶可以以什麼方式訪問默認值?訪問對象用於從外部創建jQuery UI小部件

例子:

// separate file, create widget 
$.widget("namespace.myWidget", { 
    defaults: { 
     hello: "world" 
    } 
} 

// index.html 
// then user should be able to do something similar 
$.namespace.myWidget.defaults = { goodbye: "World" }; 
// or 
$.namespace.myWidget.defaults.hello = "Dog"; 

// and then create widget normally 
$(".selector").myWidget(); 

回答

1

你可以直接附加defaults對象您已經定義了小部件:

(function ($) { 
    $.widget("namespace.myWidget", { 
     _init: function() { 
      var options = $.extend({}, $.namespace.myWidget.defaults, this.options); 
      /* Do something with options.hello */ 
     } 
    }); 

    /* Create the `defaults` object */ 
    $.extend($.namespace.myWidget, { 
     defaults: { 
      hello: 'world' 
     } 
    }); 
}(jQuery)); 

然後小工具的用戶可以修改默認設置:

$.namespace.myWidget.defaults.hello = 'hello'; 

例如:http://jsfiddle.net/J5rVP/49/