我被一个组件js中的递增和递减值卡住了。我在我的模板中得到了这个:
<div class="circleBase" {{action 'upHeat' device.status}}> <p> {{heat}} C </p> </div>
现在我只想在点击div时增加热度值。我的组件看起来像这样:
init() {
console.log('init');
this._super(...arguments);
this.errors = [];
},
didRender() {
this.setProperties({
heat: 0
});
},
actions: {
upHeat: function(a){
this.set('heat', this.heat +1)
//or
this.setProperties({
heat: this.heat +1
});
console.log(heat);
}
}
这样不行每次我点击我的div,热量值都会增加,但不会保存。我的模板仍然显示0作为值。
3条答案
按热度按时间x8goxv8g1#
您已重置
didRender()
中的值。因此,钩子将触发一个render,将值重置为
0
。在
didRender
中使用console.log(something)
可以看到,只要单击div
,就会调用didRender
钩子。我按照你的要求做了一个小动作。请看一下。
https://ember-twiddle.com/5ef763cc77aec803f9d62ae85a15dbc1
1mrurvl12#
你不应该在Ember中读取像
this.heat
这样的值,而应该使用this.get('heat')
。所以这对你来说是:还有另一个例子,如果你只是想增加一个属性,你可以像这样使用
this.incrementProperty
。你可以在API docs中阅读。
w7t8yxp53#
用于将属性值增加一个
this.incrementProperty('heat');
用于将属性值减少一个
this.decrementProperty('heat');