我正在尝试使用一个助手,该助手应使用templates:array
中的反应数组返回一个指定$in
整个Collection子集的Collection。
我有
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
。这似乎表明帮助程序的编译不满足于所找到的内容。
我还尝试将tags
用作模板本地实例,并将.get()
添加到帮助器查询中的tags
。但结果相同。
我应该从哪里开始寻找?我是否正确使用ReactiveArray?是否可以做我想要的事情,即基于ReactiveArray进行反应式查询?
答案 0 :(得分:0)
我个人没有使用过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);
}
});