1

此处为超级编码 n00b。我正在尝试在 emberjs 中创建一个营养计算器。如果我有如下用户输入表单,我在哪里编写计算函数以及如何显示答案?

    <form>
      <div class="form-group">
        <label for="weight">Weight</label>
        {{input type="text" id="weight" class="form-control" value=weight}}
      </div>
      <div class="form-group">
        <label for="runduration">How long will you be running? (hours)</label>
        {{input type="text" id="runduration" class="form-control" value=runduration}}
      </div>
      <div class="form-group">
        <label for="cycleduration">How long will you be cycling?</label>
        {{input type="text" id="cycleduration" class="form-control" value=cycleduration}}
      </div>
      <button {{action calculate}}>Calculate nutrition</button>
    </form>

我会在控制器中编写函数吗?

在我的路由器中,我有以下内容,但我宁愿将输入表单和显示的计算保留在同一个模板 Nutritioncalc.hbs 上

  this.route('nutritioncalc');
  this.resource('new-nutritioncalc', { path: '/nutritioncalc/new' });  

谢谢。

4

1 回答 1

0

Embervalue=variable在输入字段中填充数据。您可以在您的NewNutritioncalcController.

App.NewNutritioncalcController = Ember.ObjectController.extend({
  actions: {
    calculate: function(){
      var weight = this.get('weight'),
          runduration = this.get('runduration'),
          cycleduration = this.get('cycleduration');
    }
  }
});

动作冒泡

动作从关联的控制器传播到路由链。

文档

这是动作冒泡文档

如果控制器没有在其动作对象中实现与动作同名的方法,动作将被发送到路由器,当前活动的叶路由将有机会处理该动作。

两种方式绑定

这是一篇关于Ember 中两种方式数据绑定的博客文章。

无论您是在模板中更改属性(例如在文本框中键入)还是在 javascript 中更改属性(例如通过单击按钮),在这两种情况下,更改都会反映到使用属性或变量的所有位置.

于 2014-06-05T22:10:00.700 回答