Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用全局变量使Meteor架构在站点范围内可访问_Javascript_Meteor_Global Variables - Fatal编程技术网

Javascript 使用全局变量使Meteor架构在站点范围内可访问

Javascript 使用全局变量使Meteor架构在站点范围内可访问,javascript,meteor,global-variables,Javascript,Meteor,Global Variables,我正在尝试在我的Meteor应用程序中使用SimpleSchemas 我在定义它们时没有遇到任何问题,我可以看到验证规则正在运行,但我刚刚添加了autoForm包,当我尝试使用我已经定义的模式时,我似乎无法访问它们存储在其中的对象。我假设这是一个问题,因为我对变量的全局性等缺乏理解 在我的/collections目录中名为schemas.js的文件中 var Schemas = {}; Schemas.AddressDetails = new SimpleSchema({ address_

我正在尝试在我的Meteor应用程序中使用SimpleSchemas

我在定义它们时没有遇到任何问题,我可以看到验证规则正在运行,但我刚刚添加了autoForm包,当我尝试使用我已经定义的模式时,我似乎无法访问它们存储在其中的对象。我假设这是一个问题,因为我对变量的全局性等缺乏理解

在我的
/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是在哪里记录的,但我只是花了几个小时试图找出出了什么问题。谢谢你的回答!