0



プラグインを作成し始めていますが、プラグイン内の可変スコープで問題が発生しています。プラグイン内のどこからでもオプションにアクセスできるようにしたいのですが、方法がわかりません。var$ optsはその関数にのみ表示され、パブリック関数はアクセスできません。誰かが私がそれをする方法を知っていますか?

よろしくお願いします。プラグインの作成方法に間違いがあることに気付いた場合は、遠慮なく言及してください:D

//@@@@ Start of myViewport Plugin @@@@\\
(function($) {

  $.fn.myViewport = function(options) {
    var $opts = $.extend({}, $.fn.myViewport.defaults, options);

    //Plugin Here
    return this.each(function() {           

        alert('Initialising Plugin!' + $opts.privateText + $opts.publicText);
        myPrivateFunction();
    });
  };

  // private functions
  function myPrivateFunction($opts) {
        alert($opts.privateText);
  };

  // public functions
  $.fn.myViewport.myPublicFunction = function() {
        alert($opts.publicText);
  };

  // plugin defaults
  $.fn.myViewport.defaults = {
    privateText: 'This is a text from the privateText defaults',
    publicText: 'This is a text from the publicText defaults'
  };

})(jQuery);
//@@@@ End of myViewport Plugin @@@@\\
4

1 に答える 1

1

このような :

(function($) {

  $.fn.myViewport = function(options) {
    var o = $.extend(vp, $.fn.myViewport.defaults, options);

    //Plugin Here
    return this.each(function() {           

        alert('Initialising Plugin!' + o.privateText + o.publicText);
        myPrivateFunction();
    });
  };

  var vp = $.fn.myViewport;

  // private functions
  function myPrivateFunction() {
        alert(vp.privateText);
  };

  // public functions
  vp.myPublicFunction = function() {
        alert(vp.defaults.publicText);
  };

  // plugin defaults
  vp.defaults = {
    privateText: 'This is a text from the privateText defaults',
    publicText: 'This is a text from the publicText defaults'
  };

})(jQuery);

ここでデモ。

于 2012-11-11T04:28:33.700 に答える