Meteor with ViewModel软件包未跨多个子模板更新accross

Meteor with ViewModel软件包未跨多个子模板更新accross,meteor,Meteor,我是meteor的新手,对正在发生的事情有一个基本的了解,但我坚持使用这个例子(问题已尽可能简化): 我有一个模板和一个子模板: <template name="test"> {{#each items}} {{> testItem}} {{/each}} {{#each items}} {{> testItem}} {{/each}} </template> <template name="t

我是meteor的新手,对正在发生的事情有一个基本的了解,但我坚持使用这个例子(问题已尽可能简化):

我有一个模板和一个子模板:

<template name="test">
    {{#each items}}
        {{> testItem}}
    {{/each}}

    {{#each items}}
    {{> testItem}}
    {{/each}}
</template>

<template name="testItem">
    <div {{ b "click: toggle"}}>{{value}}</div>
</template>

Template.test.viewmodel({
    items: [],
    onCreated: function() {
        this.items().push({ value: 'test' });
    }
})

Template.testItem.viewmodel({
    toggle: function() {
        this.value("changed");
    }
});

谢谢

您是对的,当您执行
此.value(“已更改”)您正在更改testItem视图模型的值,而不是父数组的值。如果要修改数组中对象的属性,我强烈建议您使用客户端Mongo集合。这会帮你省去很多麻烦

Items = new Mongo.Collection(null);

Template.test.viewmodel({
  items: function() {
    return Items.find();
  },
  onCreated: function() {
    Items.insert({ _id: "1", value: 'test' });
  }
})

Template.testItem.viewmodel({
  toggle: function() {
    Items.update({ _id: this._id() }, { value: 'changed' });
  }
});
顺便说一句,我很少这样检查。你会在网上得到更快的回复

Items = new Mongo.Collection(null);

Template.test.viewmodel({
  items: function() {
    return Items.find();
  },
  onCreated: function() {
    Items.insert({ _id: "1", value: 'test' });
  }
})

Template.testItem.viewmodel({
  toggle: function() {
    Items.update({ _id: this._id() }, { value: 'changed' });
  }
});