【问题标题】:Meteor - accessing method from Lib folderMeteor - 从 Lib 文件夹访问方法
【发布时间】:2015-11-28 05:23:03
【问题描述】:

我想在另一个 js 文件中访问与 modal 相关的方法。所以我创建了一个名为 app 的全局对象并创建了如下方法:

//global variables    
app = {};

//modal components
app.modal = function ( ele ) {
  return {
    "closeModal": function() {
      $('.modal.fade').removeClass("in");
      $(".browser .overlay").removeClass("show");
    }
  }
}();

然后要访问 closeModal 方法,我基本上在 *.js 文件中调用app.modal.closeModal()。但我收到以下错误消息:

Exception in setTimeout callback: TypeError: app.modal.closeModal is not a function

我已经盯着这个看了一段时间,但似乎看不出问题出在哪里。我敢打赌我在做一些非常愚蠢的事情。

感谢您的帮助。

【问题讨论】:

    标签: javascript methods meteor


    【解决方案1】:

    正如 saimeunt 所说,您可能想要使用类似的东西:

    app = {};
    
    app.modal = {
      closeModal: function() {
        $('.modal.fade').removeClass("in");
        $(".browser .overlay").removeClass("show");
      }
    };
    

    此外,您需要将此文件(包含#closeModal)放在将在加载调用它的文件之前加载的位置。这是假设您自动调用它(似乎您来自 setTimeout())。

    加载顺序详见回复:https://stackoverflow.com/a/10741082/4044373

    【讨论】:

      【解决方案2】:

      app.modal 被定义为一个函数,而不是一个对象,所以你必须写app.modal().closeModal()

      但是您应该将 modal 定义为这样的对象:

      app = {
        modal: {
          closeModal: function(){
            // whatever
          }
        }
      };
      

      【讨论】:

      • 我按照您的建议尝试了,但我似乎仍然收到以下错误:setTimeout 回调中的异常:TypeError:app.modal.closeModal 不是函数...
      猜你喜欢
      • 2012-10-23
      • 1970-01-01
      • 2015-01-06
      • 2016-08-29
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多