Meteor - 从Lib文件夹访问方法

时间:2015-09-02 15:47:48

标签: javascript methods meteor

我想在另一个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

我一直盯着这一段时间,但似乎无法看出问题出在哪里。我敢打赌,我正在做一些非常愚蠢的事情。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

app = {};

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

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

有关加载订单的详细信息,请参阅答案:https://stackoverflow.com/a/10741082/4044373