Ember.js:基于承诺的财产

时间:2014-09-26 15:30:02

标签: ember.js

假设company是路线中某处定义的承诺。在我的控制器中,我根据这个承诺定义了一个计算属性breadcrumb

breadcrumb: function() {
    return [
        ...
        {name: this.get("company").get("name"), url: "#company/" + this.get("company").get("id")},
        ...
    ]
}.property("company")

在我的模板中,即使承诺结算,面包屑也不会更新。

{{format-breadcrumb breadcrumb}}

我也试过observes但结果是一样的。获得我想要的结果的唯一方法是观察company

的属性
...
}.property("company.id")

这是基于承诺创建属性的唯一方法吗?我想观察承诺本身,而不是一个特定的属性......

我使用的是ember 1.7和ember-data beta 10。

由于

1 个答案:

答案 0 :(得分:1)

我的建议将始终取决于您关注的属性:

}.property('company.id', 'company.name')

因为那些会影响面包屑的东西。如果承诺加载并且这些属性稍后更改,您是否希望面包屑过时(双关语不可避免)

替代将(另外)观察promise生命周期属性:

  • isLoaded
  • isSettled
  • isRejected
  • isFulfilled

所以:

 }.property('company.isFulfilled')

请参阅http://emberjs.com/api/classes/Ember.PromiseProxyMixin.html

额外的想法,(我)更喜欢:

this.get('company.name')

在:

this.get('company').get('name')