不能使用CoffeeScript在meteor中创建仅用于客户端的集合
Can't create a client only collection in meteor using CoffeeScript
嗨,我需要创建一个客户端集合,我使用CoffeeScript,我试图这样创建它:
Template.mcqQuestionOptionsFieldset.onCreated ->
@AddMcqOptions = new Mongo.Collection null
当我运行应用程序时,它不工作,我得到错误:
ReferenceError: AddMcqOptions is not defined
我尝试了没有'@'符号我尝试了一切,在javascript控制台我看不到它是加载的,似乎集合不存在…
如果我删除@符号错误路径移动到其他文件,我试图使用变量,但如果我添加@错误路径出现在同一文件中,我声明的变量,有人能告诉我发生了什么?
谢谢
客户端集合不需要在模板中定义,特别是在其他文件中使用它时。
添加一个文件,例如client/collections.coffee
:
@AddMcqOptions = new Mongo.Collection null
然后在客户端任何地方正常使用AddMcqOptions.insert(...)
等。
如果您想保持当前的结构,也可以使用胖箭头(我还没有测试过)。您还将失去对引用模板的this
/@
的访问权。
Template.mcqQuestionOptionsFieldset.onCreated =>
@AddMcqOptions = new Mongo.Collection null
另一个可能的选项,允许您正常使用this
/@
:
self = this
Template.mcqQuestionOptionsFieldset.onCreated ->
self.AddMcqOptions = new Mongo.Collection null
如果你想要模板特定的客户端集合,你可以这样尝试。我是这样使用的,它工作得很好:
Template.myTemplate.created = function () {
var instance = this;
instance._MyClientCollection = new Mongo.Collection(null);
instance._MyClientCollection.insert({...});
}
Template.myTemplate.helpers({
options: function () {
return Template.instance()._MyClientCollection.find({...}, {sort: {...}});
}
});
Template.myTemplate.destroyed = function () {
var instance = this;
instance._MyClientCollection.remove({});
}
相关文章:
- 用于编写与我作为客户端查看的网页交互的脚本的术语(如果有的话)是什么
- 应用程序引擎终结点:用于OAuth2授权的Javascript客户端库需要多个弹出窗口
- 将 package.json 用于客户端包,可以在浏览器中动态加载
- 您是否需要将 API 密钥用于客户端应用程序的谷歌地图 API
- 用于客户端-服务器通信和安全的 API 密钥
- 任何适用于iOS的WebRTC客户端实现
- 注册客户端脚本不适用于设置数组值
- 有哪些技术可用于 RIA 开发的客户端和服务器端调试
- 客户端脚本,用于显示来自其他网站的所有图像
- HTML/jQuery 客户端和 PHP 后端用于 Twitter oAuth
- 为什么我可以使用 FileSystemObjects 来读取和写入客户端二进制文件,而不能用于读取和发送到服务器
- SOAP 客户端仅适用于 Google Chrome
- AWS 服务器端临时凭证是否可用于客户端 S3 上传
- JS框架,用于客户端与rest api通信
- 跨浏览器,用于客户端应用程序的对象持久性库
- 我应该使用哪个JavaScript库用于客户端连字符
- 网格中的Page_validators用于客户端验证
- Javascript -如何保护用于客户端加密的密钥
- 用于客户端日志记录的脚本或工具
- 不能使用CoffeeScript在meteor中创建仅用于客户端的集合