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
Meteor 未捕获引用错误:未定义集合_Meteor - Fatal编程技术网

Meteor 未捕获引用错误:未定义集合

Meteor 未捕获引用错误:未定义集合,meteor,Meteor,我正在做流星应用程序。我在客户端文件夹的main.js文件中定义了collection变量。在同一位置还有templates.js文件。Template.myTemplate.rendered=function(){};在templates.js文件中定义。我可以在渲染部分内访问集合变量,但在渲染部分外它不可用 如何才能访问“rendered”部分之外的集合变量 内main.js collectionVariable = new Meteor.Collection('collection_nam

我正在做流星应用程序。我在客户端文件夹的main.js文件中定义了collection变量。在同一位置还有templates.js文件。Template.myTemplate.rendered=function(){};在templates.js文件中定义。我可以在渲染部分内访问集合变量,但在渲染部分外它不可用

如何才能访问“rendered”部分之外的集合变量

内main.js

collectionVariable = new Meteor.Collection('collection_name');
Inside templates.js

console.log(collectionVariable); // getting "Uncaught ReferenceError: collectionVariable is not defined" here.

Template.myTemplate.rendered = function() {

  //Some code. Can access the variable here.

};

谢谢

请记住文件加载顺序。在您的案例中,
templates.js
似乎是在
main.js
之前加载的,因此
collectionVariable
在计算时没有定义。如果要确保可以在文件体中使用变量,请使用
Meteor.startup

var localVariable;

Meteor.startup(function(){
  localVariable = collectionVariable;
  console.log(collectionVariable);
});

提示:将代码缩进四个空格以正确格式化。谢谢Hubert的回复。对看起来templates.js在main.js之前运行。这方面有什么办法吗?比如,如果我在templates.js而不是main.js中创建集合。这是一件好事吗?main.js应该是我的主客户端脚本。首先,大部分时间的集合都应该在共享代码区域中,而不仅仅是在客户端-您希望服务器上的相同集合能够利用同步。你不想把代码加倍。除非它是本地集合,否则在创建过程中就不会使用name参数。至于排序,最好不要依赖它。无论如何,你真的不应该有这个问题。所有需要收集的内容要么转到需要时运行的帮助器/回调(当然是在加载应用程序之后),要么可以毫无问题地移动到
Meteor.startup
。为什么文件正文中需要
collectionVariable
?你可能在试图实现一些非“流星方式”的东西。我有一些动态信息框,将根据数据库详细信息显示在谷歌地图上。我试图在数据更改时为Infobox自定义div提供一些jquery效果。问题是jquery代码不起作用,因为div元素的创建似乎还没有完全完成,无法正常工作。