2016-09-13 4 views
1

私はこのインデックスコントローラを持っています。Emberの動作またはthis.getは一度だけ動作します

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    actions: { 
     reload() { 
      console.log('click on button reload'); 
      this.get('doReload'); 
     } 
    }, 
    doReload: Ember.computed(function() { 
     console.log('do reload method'); 
     // ajax action will be here. 
    }), 
}); 

これはテンプレートのボタンです。

<button type="button" class="btn btn-secondary btn-sm" {{action 'reload'}}>Reload</button> 

最初にボタンをクリックすると、console.log()に2行のメッセージが正しく含まれます。ボタン上の

クリック
がリロード方法

を行うリロードしかし、私は二時間以上ボタンをクリックすると、console.log() 1行だけが含まれて含まれています。もう一度doReloadを呼び出しません。ボタン上の

クリックthis.get仕事私はアクションボタンをクリックして、すべての時間を作るためにどのよう

をリロード?

+0

私は、Emberのドキュメントの計算機能に関する部分を再読み込みすることをお勧めします。彼らはかなり明確に書かれています。 –

答えて

2

計算されたプロパティは、依存プロパティが変更されるまでキャッシュされます。アクション内にない関数を実行したいだけなら、関数を作成して呼び出すだけです。

export default Ember.Controller.extend({ 
    actions: { 
     reload() { 
      console.log('click on button reload'); 
      this.doReload(); 
     } 
    }, 
    doReload: function() { 
     console.log('do reload method'); 
     // ajax action will be here. 
    }, 
}); 
関連する問題