2016-09-13 7 views
1

Ich habe diesen Index-Controller.Ember Action oder this.get funktioniert nur einmal

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. 
    }), 
}); 

Und das ist Schaltfläche in der Vorlage.

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

Als ich zum ersten Mal auf den Button klicken, enthalten console.log() 2 Zeile von Nachrichten korrekt.

Klick auf den Button nachladen
tun Reload-Methode

Aber wenn ich auf die Schaltfläche für zweites Mal klicken oder mehr, console.log() enthalten enthalten nur eine Zeile. Es ruft nicht erneut doReload.

Klick auf den Button nachladen

Wie this.get Arbeit jedes Mal, wenn ich auf die Aktionstaste klicken machen?

+0

Ich würde vorschlagen, die Teile der Ember-Dokumentation über berechnete Funktionen erneut zu lesen. Sie sind ziemlich klar geschrieben. –

Antwort

2

Die berechneten Eigenschaften werden zwischengespeichert, bis abhängige Eigenschaften geändert werden. Wenn Sie nur eine Funktion ausführen möchten, die sich nicht innerhalb der Aktion befindet, erstellen und rufen Sie eine Funktion auf.

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. 
    }, 
});