Ember:incrementProperty与按钮和输入的交互

时间:2014-03-25 06:23:29

标签: javascript ember.js

我有一个数字属性,可以通过单击按钮(使用incrementProperty)或直接输入文本字段来更改。

当两者一起使用时,incrementProperty开始追加" 1"到数字的末尾而不是递增它。

请参阅我修改的simple Ember jsbin中的问题。

重现:

  1. 在文本字段中输入一个数字。
  2. 点击 + 按钮。
  3. 奇怪的是,decrementProperty似乎工作得很好。如果您按照上面的步骤,然后单击 - 按钮,它似乎将值从字符串重置为数字,并且增量和减量都可以正常工作。同样,如果您输入一个数字并单击 - 按钮,一切正常。这是一个错误,还是我错过了什么?

1 个答案:

答案 0 :(得分:4)

看起来incrementProperty正在执行连接操作而不是数字加法,因为输入助手将值设置为string

如果您看到incrementProperty set(this, keyName, (get(this, keyName) || 0) + increment); 方法,则可以找到应该执行增量操作的下一行。

decrementProperty

这可以根据密钥的值执行数字加法或连接。

-正常工作,"22" - 1运算符未过载。例如string返回21。

快速修复是在递增之前执行类型转换。我已经将jsBin中的代码修改为更改后的值的打印类型。使用输入助手输入值时,可以看到它打印App.ApplicationController = Ember.Controller.extend({ age: 36, ageDidChange: function () { console.log(typeof(this.get('age'))); }.observes('age'), actions: { older: function() { this.set('age', parseInt(this.get('age'), 10) + 1); }, younger: function() { this.decrementProperty('age'); } } });

{{1}}