2016-08-22 57 views
0

我想在一个变量,它是在服务中使用观察者来说,这是我的代码:Ember.js观察

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

一切正常,但没有在观察员身上。我该怎么办?

+2

'Ember.observer( 'uploader.progress',...' –

+0

它的工作谢谢您 –

+0

你检查'Ember.observer'文档 – 2016-08-22 17:50:36

回答

1

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/