计算相关输入值

时间:2015-01-03 06:04:54

标签: ember.js

我的目标是计算基准价格和销售价格之间的保证金百分比。但我也希望能够在保证金变化时重新计算价格。我无法通过property()观察变化,因为价格和保证金将无限地重新计算。相反,我想在keyupchange事件上运行计算,这正是我在JQuery中实现相同任务的方式。 但是Ember似乎并不支持input助手的此类事件。只有keypress支持者,我无法使用keypress实现所需的行为。

模板:

{{input value=basePrice placeholder='Base Price' action="updateMarginPercent" on="key-press"}}
{{input value=price placeholder='Price' action="updateMarginPercent" on="key-press"}}
{{input value=marginPercent placeholder='Margin Percent' action="updatePrice" on="key-press"}}

控制器:

App.ApplicationController = Ember.Controller.extend({
  basePrice: 100,
  price: 100,
  marginPercent: 0,
  actions: {
    updateMarginPercent: function() {
      debugger;
      this.set('marginPercent', (this.get('price') - this.get('basePrice')) * 100.0 / this.get('basePrice'));
    },
    updatePrice: function() {
      this.set('price', this.get('basePrice') * (this.get('marginPercent') + 100) / 100);
    }
  }
});

JSBin:http://jsbin.com/yevar/1/edit?html,js,output

1 个答案:

答案 0 :(得分:1)

将文本字段组件扩展为支持key-up

非常容易
App.KeyUpInputComponent = Em.TextField.extend({
  keyUp: function(event){
    // I chose to send these things, you could just send nothing
    this.sendAction('key-up', event, this.get('value'));
  }
});


{{key-up-input value=asdf key-up='keyUpAction'}}

http://emberjs.jsbin.com/didisuneka/1/edit?html,js,output

你的jsbin

http://jsbin.com/xedaxageze/1/edit

错误,我意识到我之前已经回答了这个问题,并且已经回答了...... KeyPress event not working as expected in Ember