我有一个数字属性,可以通过单击按钮(使用incrementProperty)或直接输入文本字段来更改。
当两者一起使用时,incrementProperty开始追加" 1"到数字的末尾而不是递增它。
请参阅我修改的simple Ember jsbin中的问题。
重现:
奇怪的是,decrementProperty似乎工作得很好。如果您按照上面的步骤,然后单击 - 按钮,它似乎将值从字符串重置为数字,并且增量和减量都可以正常工作。同样,如果您输入一个数字并单击 - 按钮,一切正常。这是一个错误,还是我错过了什么?
答案 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}}