我试图抓住一些我确信在流星中非常基本的东西,即使用反应计算值。这是一个我试图实现的事情的简单例子。代码不起作用,但它看起来像我期望的可能工作。我正在使用autoform进行模式验证
Schema = {}
Schema.calcs = new SimpleSchema({
a: {type: Number},
b: {type: Number}
});
Template.Calcs.helpers({
total: function() {
var a = Autoform.getFieldValue('calcs', 'a')
var b = Autoform.getFieldValue('calcs', 'b');
// Would be nice if I could do something like this instead of the above
// var a = this.Autoform.a;
// var b = this.Autoform.b;
return a + b;
},
totalDouble: function() {
var total = this.total; // This doesn't work
return total * 2;
}
});
模板看起来像:
<template name='calcs'>
{{> quickForm id="calcs" schema="Schema.calcs" validation="keyup"}}
<ul>
<li>Total: {{total}}</li>
<li>Double Total: {{totalDouble}}</li>
<ul>
</template>
我有3个问题:
Autoform.getFieldValue(...)
更简洁的方式在帮助程序中输入值?这实际上是一个我正在从Ember迁移的测试项目,我所追求的行为是在Ember控制器(不包括验证)中实现的,如下所示:
App.CalcsController = Ember.Controller.extend({
a: null,
b: null,
total: function() {
return this.get('a') + this.get('b');
}.property('a', 'b'),
totalDouble: function() {
return this.get('total') * 2;
}.property('total')
});
答案 0 :(得分:1)
您可以将其存储在会话中:
total: function() {
var a = parseInt(Autoform.getFieldValue('calcs', 'a'))
var b = parseInt(Autoform.getFieldValue('calcs', 'b'));
var total = a+b;
Session.set("total", total);
return total;
},
totalDouble: function(){
var total = Session.get("total");
return total* 2;
}