【发布时间】:2016-04-18 17:11:45
【问题描述】:
我想创建全局函数来从 Meteor 中的收藏中删除一个项目。
我的代码:
Template.adminLayout.events({
'click .delete': function(e) {
var collection = $(e.target).data('collection'),
redirect = $(e.target).data('redirect'),
id = this._id;
// Remove request
collection.remove(id);
// Redirect
Router.go(redirect);
}
});
使用collection.remove(id),我收到此错误:
collection.remove 不是函数
如果我使用 Messages(我的收藏名称)Messages.remove(id) 进行测试,它可以工作。
你知道为什么我的代码不起作用吗?
【问题讨论】:
-
当您在调试器中或通过控制台检查
collection时,它的类型是什么? -
嗨杰米克。集合返回“字符串”。
-
嗯,这就是你的答案。 javascript 中的字符串不包含函数
remove!那么下一个问题是,你如何填充.data('collection')? -
我想在数据上添加我的“动态集合”:
<a href="#" class="delete" data-collection="Messages" data-redirect="messageListAdmin">Delete</a>编辑:没关系,我添加了collection = eval(collection);并且它有效!谢谢贾米克! -
这是一个糟糕的解决方案,(可能)向黑客开放您的网站。如果它是一个全局对象,至少将其更改为
collection = window[collection],或者最好不要将Messages存储在全局范围内。
标签: javascript meteor