1

我在 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'));
      });

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

谁能解决这个问题

4

1 回答 1

1

if检查中,您需要使用pushObject而不是push,这是将触发计算属性以重新计算和观察者触发和模板以将其更新为新值的方法。

likestatuses.pushObject(likestatusItem);
于 2017-08-19T13:23:56.550 回答