服务中的Ember计算属性或观察者

时间:2016-07-28 22:31:26

标签: ember.js

我有服务,并在服务中声明一个属性

bucket: []

稍后在服务中,我添加了一些内容。

我试图在同一服务中设置一个Ember计算属性或观察者来监听/响应存储桶中的更改。

类似的东西:

bucketListener: Ember.computed('bucket', function() {
   //do stuff in response to something being added to or removed from the bucket
}

但我无法让它发挥作用。我使用Ember.computed和Ember.observer尝试了很多不同的排列,但是我永远无法触发bucketListener。

我已经进行了检查,并且确定该存储桶正在按预期添加或从预期中删除,但是bucketListener仍然没有被调用。

在服务中执行此操作是否有一些技巧?或者我只是搞砸更基本的东西?

2 个答案:

答案 0 :(得分:1)

在计算属性或观察者方面,服务与通常的Ember.Object没有什么不同。请使用.[]来监视属性更改时要添加或删除的元素以及CP的观察者内容。您还可以观看主要财产,以确保它将被解雇:

bucketListener: Ember.observer('bucket', 'bucket.[]', function() {
   //do stuff in response to something being added to or removed from the bucket
}

答案 1 :(得分:1)

要触发计算属性,您需要使用this.get('bucket').pushObject('something')而不是通常的push()。 当您仅访问/使用bucketListener时,将调用计算属性。

工作示例旋转。https://ember-twiddle.com/776ffb2be7e129655ef62e59b2dc8697?openFiles=services.cart.js%2C