ember.js 可调元件增量/减量值

cyej8jka  于 2023-10-18  发布在  其他
关注(0)|答案(3)|浏览(149)

我被一个组件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作为值。

x8goxv8g

x8goxv8g1#

您已重置didRender()中的值。
因此,钩子将触发一个render,将值重置为0
didRender中使用console.log(something)可以看到,只要单击div,就会调用didRender钩子。
我按照你的要求做了一个小动作。请看一下。
https://ember-twiddle.com/5ef763cc77aec803f9d62ae85a15dbc1

1mrurvl1

1mrurvl12#

你不应该在Ember中读取像this.heat这样的值,而应该使用this.get('heat')。所以这对你来说是:

this.set('heat', this.get('heat') + 1);

还有另一个例子,如果你只是想增加一个属性,你可以像这样使用this.incrementProperty

this.incrementProperty('heat');

你可以在API docs中阅读。

w7t8yxp5

w7t8yxp53#

用于将属性值增加一个this.incrementProperty('heat');
用于将属性值减少一个this.decrementProperty('heat');

相关问题