2016-08-22 89 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/