如何创建承诺感知数字输入

时间:2015-06-02 05:22:13

标签: ember.js

以下是我到目前为止的情况。问题是,如果number-input绑定到async ember-data模型属性(它将返回一个稍后解析的第一个承诺) - 下面的代码不起作用,而是显示零。

我怎样才能知道承诺?

USAGE :(在这种情况下,vehicleService是{async:true})

{{number-input numberValue=model.vehicleService.cost}}

CODE:

import Ember from 'ember';

var DELETE_KEY = 46;
var INSERT_KEY = 45;
var ZERO_KEY = 48;
var NINE_KEY = 57;

export default Ember.TextField.extend({
  tagName: 'input',
  type: 'number',

  numberValue: function(key, value) {
    if (arguments.length === 1) {
      var number = parseFloat(this.get('value'));
      return isNaN(number) ? 0 : number;
    } else {
      return this.set('value', (value !== void 0 ? '' + value : ''));
    }
  }.property('value'),

  didInsertElement: function() {
    return this.$().keypress(function(key) {
      if ((key.charCode !== DELETE_KEY) && (key.charCode !== INSERT_KEY) && (key.charCode < ZERO_KEY || key.charCode > NINE_KEY)) {
        return false;
      }
    });
  }
});

1 个答案:

答案 0 :(得分:0)

App.NumberInputComponent = Em.Component.extend({
  attributeBindings: ['value', 'type'],
  tagName: 'input',
  type: 'number',
});

示例 - http://emberjs.jsbin.com/jupoworuga/1/edit