2016-08-22 3 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'のドキュメントを確認しました –

答えて

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/