Javascript 从meteor主应用程序包中访问对象
所以我现在正在开发一个基于几个不同软件包的meteor应用程序 我的主应用程序中有一个对象,我使用它作为包的一种API。此对象如下所示(在主应用程序的lib/helpers/api.coffee中): 如果我在Mainapp或控制台中访问此对象,则一切正常。 但是,如果我试图访问应用程序包中的该对象,我会得到一个“Mainapp not defined”错误 是否有办法在主应用程序和包之间共享此对象。我知道我可以用session.set和session.get做一些事情,但我认为最好有一个中心对象,作为我的包的一种API 还有Meteor.userId()和Meteor.user(),它们对Meteor核心系统执行类似的操作(这些函数也可以在包中获得)。他们如何在Meteor主应用程序和软件包中实现此功能Javascript 从meteor主应用程序包中访问对象,javascript,node.js,meteor,package,meteorite,Javascript,Node.js,Meteor,Package,Meteorite,所以我现在正在开发一个基于几个不同软件包的meteor应用程序 我的主应用程序中有一个对象,我使用它作为包的一种API。此对象如下所示(在主应用程序的lib/helpers/api.coffee中): 如果我在Mainapp或控制台中访问此对象,则一切正常。 但是,如果我试图访问应用程序包中的该对象,我会得到一个“Mainapp not defined”错误 是否有办法在主应用程序和包之间共享此对象。我知道我可以用session.set和session.get做一些事情,但我认为最好有一个中心对
提前谢谢 使Mainapp全球可访问。因此,您的示例生成的javascript应该是:
var constructor = function () {
}
constructor.prototype.getCurrentUser= function () {.....
.... DEFINE YOUR METHODS ....
Mainapp = new constructor();
Meteor对前面没有var的变量施展了魔法,使它们可以全局访问。我终于发现了问题所在 对象变量需要全局可用(正如marcodejongh正确指出的) 我犯的错误是,我直接在文件中调用了封装在对象中的功能(在文件加载时没有函数或任何其他-->功能) 解决我的问题的方法是使用函数中的功能,例如函数
# inside an iron-router routes
Router.map ->
@route 'index',
controller: IndexController
path: '/index'
onAfterAction: ->
Mainapp.setTitle 'Test'
Meteor首先构建您的所有包。此时无法访问Mainapp对象。构建包并将其嵌入Mainapp后,该功能可用。非常感谢您的回答!你说得对。变量需要是全局可访问的。我发现我用错误的方式调用了对象。下面我的回答更详细地说明了我做错了什么。
Mainapp.getCurrentUserId()
# inside an iron-router routes
Router.map ->
@route 'index',
controller: IndexController
path: '/index'
onAfterAction: ->
Mainapp.setTitle 'Test'