Javascript 使用全局变量使Meteor架构在站点范围内可访问
我正在尝试在我的Meteor应用程序中使用SimpleSchemas 我在定义它们时没有遇到任何问题,我可以看到验证规则正在运行,但我刚刚添加了autoForm包,当我尝试使用我已经定义的模式时,我似乎无法访问它们存储在其中的对象。我假设这是一个问题,因为我对变量的全局性等缺乏理解 在我的Javascript 使用全局变量使Meteor架构在站点范围内可访问,javascript,meteor,global-variables,Javascript,Meteor,Global Variables,我正在尝试在我的Meteor应用程序中使用SimpleSchemas 我在定义它们时没有遇到任何问题,我可以看到验证规则正在运行,但我刚刚添加了autoForm包,当我尝试使用我已经定义的模式时,我似乎无法访问它们存储在其中的对象。我假设这是一个问题,因为我对变量的全局性等缺乏理解 在我的/collections目录中名为schemas.js的文件中 var Schemas = {}; Schemas.AddressDetails = new SimpleSchema({ address_
/collections
目录中名为schemas.js
的文件中
var Schemas = {};
Schemas.AddressDetails = new SimpleSchema({
address_line_1: {
type: String,
}
...
});
Schemas.ContactDetails = new SimpleSchema({
address: {
type: Schemas.AddressDetails
}
});
...
但是,如果我随后尝试使用以下代码从位于/client/pages/.js
中的文件中访问该架构
对象,则当autoForm尝试访问架构时会出现错误,因为找不到它
Template.admOrganisationSetupStepOne.helpers({
schema: function() {
return Schemas.ContactDetails;
}
});
看来我做错了两件事 我的Schemas.js文件需要从
/lib
目录运行,以便在加载任何其他代码之前执行它。谢谢
我的第二个错误是我定义了
Schemas={}代码>带有var
前缀。通过调用var
它限制了Schemas对象的使用,这意味着它不能在不同的页面或脚本中使用。在助手中返回模式之前,请尝试检查模式是否已定义。或者将模式文件放在/lib文件夹中,然后确保模式在模板加载之前加载。我不知道“var”gotcha是在哪里记录的,但我只是花了几个小时试图找出出了什么问题。谢谢你的回答!