2012-01-02 74 views
1

外引用插件可变我有一个使用的变量,像这样一个插件:设置/从插件

(function($, window) { 

$.widget("mobile.multiview",$.mobile.widget, { 

     // variables 
     vars: { 
      $ignoreMyOwnNextHashChange : false 
      } 
     }); 
    ... 
    }) (jQuery,this); 

我想设置$ ignoreMyOwnNextHashChange从外面=另一个插件这个后坐。这可能吗?做这样不起作用:

$.mobile.multiview.vars.$ignoreMyOwnNextHashChange = true; 
+0

做一个功能来做到这一点。 – 2012-01-02 15:59:27

+0

一些更多的输入?谢谢 – frequent 2012-01-02 16:05:57

回答

1

您这里有两个很好的选择:

  1. 使用Widget类里面默认options对象。所有小部件都有一个options属性,其中包含许多其他功能。使用options将允许你写的每一个选项的属性getter和setter方法:

    (function($, window) { 
    
         $.widget("mobile.multiview", { 
    
         // variables 
         options: { 
          $ignoreMyOwnNextHashChange: false 
         } 
        }); 
    })(jQuery, this); 
    

    如果你的财产是:

    $("#selector").multiview("option", "$ignoreMyOwnNextHashChange"); // getter 
    $("#selector").multiview("option", "$ignoreMyOwnNextHashChange", true); // setter 
    

    如果你走这条路,你实际上在你的部件更少的代码结束可以在初始化时进行设置,然后再进行检索或设置,这可能是您的最佳选择。所有的jQueryUI小部件都遵循这种模式。

  2. 您的第二个选择是创建一个属性特定的方法,您可以调用。这是有用的,如果你在内部设置上初始化变量,然后允许用户获取或设置:

    (function($, window) { 
    
        $.widget("mobile.multiview", { 
         vars: { 
          $ignoreMyOwnNextHashChange: false 
         }, 
    
         ignoreMyOwnNextHashChange: function (newValue) { 
          if (arguments.length) { 
           this.vars.$ignoreMyOwnNextHashChange = newValue; 
          } 
    
          return this.vars.$ignoreMyOwnNextHashChange; 
         } 
        }); 
    })(jQuery, this); 
    

    现在,实例化控件后,你可以这样调用该函数:

    $("#selector").multiview("ignoreMyOwnNextHashChange"); // getter 
    $("#selector").multiview("ignoreMyOwnNextHashChange", true); // setter. 
    

针对widget工厂编写插件的一些很好的资源是jQueryUI's dev guide on the widget factoryjQueryUI source itself

+0

非常感谢!两者听起来不错!也感谢您提供额外的资源。 – frequent 2012-01-02 17:00:40