Ember.js 观察员

Ember.js Observer

我想在服务中的变量上使用观察器,这是我的代码:

const get = Ember.get;

uploader:Ember.inject.service('uploader'),

progressChanged: Ember.observer(this.get('uploader').get('progress'), function() {
  console.log('observer is called', this.get('uploader').get('progress'));
}),

那是错误:

Error while processing route: index this.get is not a function

当我尝试在警报中显示进度时:

actions:
    {
        getProgress()
        {
            alert("progress:"+this.get('uploader').get('progress'));
        }
    }

一切正常,但在观察者中却不行。我该怎么办?

this 上下文无效。正如 Kitler 所建议的,下面应该可以解决您的问题。

import Ember from 'ember';

export default Ember.Component.extend({
    uploader:Ember.inject.service(),//if service name is uploader
    progressChanged: Ember.observer('uploader.progress',function() {
        console.log('observer is called', this.get('uploader').get('progress'));
    }),
});

我建议不要过度使用观察者,你可以尝试使用计算属性。如果你只想单独显示进度那么你不需要观察者,你可以简单地使用 this.get('uploader.progress') 或通过 Ember.computed.alias('uploader.progress').

参考:https://guides.emberjs.com/v2.7.0/object-model/observers/