Meteor-指向集合的ViewModel链接

Meteor-指向集合的ViewModel链接,meteor,viewmodel,Meteor,Viewmodel,这一部分正是我挣扎的地方 Template.Calculator.viewmodel({ a: 0, b: 0, c: 0, total: function(){ return parseInt(this.a(), 10) + parseInt(this.b(), 10) + parseInt(this.c(), 10); } }) 与其让变量等于0,我如何让它们从集合中提取第一次提交或更新后保存的值?例如,假设我上次将a保存为7,将b保

这一部分正是我挣扎的地方

Template.Calculator.viewmodel({
    a: 0,
    b: 0,
    c: 0,
    total: function(){
        return parseInt(this.a(), 10) + parseInt(this.b(), 10) + parseInt(this.c(), 10);
    }
})
与其让变量等于0,我如何让它们从集合中提取第一次提交或更新后保存的值?例如,假设我上次将a保存为7,将b保存为6,它将加载带有a:6b:7c:0的页面并计算。我在试图从收集中提取数据时遇到了最困难的时刻


谢谢你能提供的任何帮助

有很多方法可以做到这一点

如果您知道在创建模板时数据订阅将准备就绪,则只需执行以下操作:


Template.Calculator.viewmodel(
函数(){
var dv=DefaultValues.findOne();
返回{
a:dv.a,
b:dv.b,
c:dv.c,
总计:功能(){
返回this.a()+this.b()+this.c();
}
}
}
);

如果有许多默认值,则可以在创建视图模型时使用文档:


Template.Calculator.viewmodel(
函数(){
//将所有特性添加到视图模型
返回DefaultValues.findOne();//或提取值
},
{
总计:功能(){
//我们假设默认文档将具有属性a、b和c。
返回this.a()+this.b()+this.c();
}
}
);

如果您不知道数据何时准备好,那么您可能会遇到覆盖用户值的问题。这完全取决于您订阅数据的位置以及订阅准备就绪的时间。以下示例在创建模板时进行订阅,并在数据准备就绪后立即更新值


Template.Calculator.viewmodel({
答:0,,
b:0,
c:0,
总计:功能(){
返回this.a()+this.b()+this.c();
},
onCreated:函数(模板){
var=这个;
template.subscribe('defaultData',function()){
var dv=DefaultValues.findOne();
即.a(dv.a);
即.b(dv.b);
即.c(dv.c);
})
}
});

同样,这完全取决于你是如何获得数据的,因此你最终可能会做一些不同于这些的事情

有关更多信息,请参阅