【问题标题】:ember computed not being updatedember 计算未更新
【发布时间】:2017-08-19 11:01:13
【问题描述】:

我在 ember 中有一个计算属性

  isCurrentUserLikeIt: Ember.computed('likestatuses.@each.user_id', function () {
    const userId = parseInt(this.commonService.getId());
    const likestatuses = this.get('likestatuses');

    return likestatuses.filterBy('user_id', userId).get('length') !== 0;
  })

用户调用操作时必须更新计算属性。

this.doSave("likestatus", likestatus).then(function (result) {
        if (result.userlike) {
          const likestatuses = context.get('likestatuses');
          likestatuses.push(likestatusItem);
          context.set('likestatuses', likestatuses);
        } else {
          const likestatuses = context.get('likestatuses').filter(function (item) {
            return item.user_id !== userId
          });
          context.set('likestatuses', likestatuses);
        }

        context.debug(context.get('likestatuses'));
      });

isCurrentUserLikeIt 属性在 this.doSave 中的语句位于 else 时更新。但是当语句在if (result.userlike) 中时,isCurrentUserLikeIt 属性没有改变:(

谁能解决这个问题

【问题讨论】:

    标签: javascript ember.js javascript-objects ember-components ember-controllers


    【解决方案1】:

    if检查中,你需要使用pushObject而不是push,这是会触发计算属性重新计算和观察者触发和模板更新它的新值。

    likestatuses.pushObject(likestatusItem);
    

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 2014-08-19
      • 2012-08-04
      • 1970-01-01
      • 2017-04-10
      • 2021-07-04
      • 2016-04-22
      • 2015-05-24
      相关资源
      最近更新 更多