流星助手使用基于反应变量的查询

时间:2018-06-27 09:06:00

标签: meteor helper

我正在尝试使用一个助手,该助手应使用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进行反应式查询?

1 个答案:

答案 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);
    }
});