Meteor Helper 使用基于反应变量的查询
Meteor Helper using query based on reactive variable
我正在尝试使用一个助手,它应该 return 一个 Collection 指定整个 Collection 的一个子集 $in
使用来自 templates:array
.[=23= 的反应数组]
我有
var tags = new ReactiveArray();
在某些情况下,我更改了数组的内容,类似于
tags.pushArray(note.tags);
(或者我应该使用 .set()
?)
我的帮手是
Template.editor.helpers({
tagslist() {
return Tags.find({ _id: { $in : tags }});
},
});
但后来我在 meteor.js:1010
中得到一个异常,看起来像这样
if (allArgumentsOfTypeString)
console.log.apply(console, [Array.prototype.join.call(arguments, " ")]);
堆栈中有compileValueSelector
。这似乎表明 helper 的编译并不满足于它所发现的内容。
我还尝试使 tags
成为模板本地实例,并在辅助查询中将 .get()
添加到 tags
。但是结果一样。
我应该从哪里开始寻找?我是否正确使用 ReactiveArray?是否可以做我想做的事,即基于 ReactiveArray 的反应式查询?
我个人没有使用过 ReactiveArray,但我认为同样的模式会起作用。我坚持使用 ReactiveVar,所以这里有一个例子可以让你朝着正确的方向前进。
Template.editor.onCreated(function () {
const instance = this;
instance.tags = new ReactiveVar([]);
});
Template.editor.helpers({
tagslist() {
const tags = Template.instance().tags.get();
return Tags.find({ _id: { $in : tags }});
}
});
Template.editor.events({
'click .tag'(event, instance){
const tag = this;
const tags = instance.tags.get();
tags.push(tag);
instance.tags.set(tags);
}
});
我正在尝试使用一个助手,它应该 return 一个 Collection 指定整个 Collection 的一个子集 $in
使用来自 templates:array
.[=23= 的反应数组]
我有
var tags = new ReactiveArray();
在某些情况下,我更改了数组的内容,类似于
tags.pushArray(note.tags);
(或者我应该使用 .set()
?)
我的帮手是
Template.editor.helpers({
tagslist() {
return Tags.find({ _id: { $in : tags }});
},
});
但后来我在 meteor.js:1010
中得到一个异常,看起来像这样
if (allArgumentsOfTypeString)
console.log.apply(console, [Array.prototype.join.call(arguments, " ")]);
堆栈中有compileValueSelector
。这似乎表明 helper 的编译并不满足于它所发现的内容。
我还尝试使 tags
成为模板本地实例,并在辅助查询中将 .get()
添加到 tags
。但是结果一样。
我应该从哪里开始寻找?我是否正确使用 ReactiveArray?是否可以做我想做的事,即基于 ReactiveArray 的反应式查询?
我个人没有使用过 ReactiveArray,但我认为同样的模式会起作用。我坚持使用 ReactiveVar,所以这里有一个例子可以让你朝着正确的方向前进。
Template.editor.onCreated(function () {
const instance = this;
instance.tags = new ReactiveVar([]);
});
Template.editor.helpers({
tagslist() {
const tags = Template.instance().tags.get();
return Tags.find({ _id: { $in : tags }});
}
});
Template.editor.events({
'click .tag'(event, instance){
const tag = this;
const tags = instance.tags.get();
tags.push(tag);
instance.tags.set(tags);
}
});