2017-11-13 3 views
0

Wie kann ich auf eine Variable im Ember-Controller zugreifen? Ich habe diese Methoden versucht, aber es funktioniert nicht:Zugriffsvariable im Ember-Controller

import ObjectController from '@ember/controller'; 
export default ObjectController.extend({ 

    currentPhase: 1, 

    init: function() { 
     var selfReference = this; 
     this.set("currentPhase",1); 
    }, 

    strings: { 
     title: "Title", 
     phase1: "Fase " + selfReference.get("currentPhase"), 
     phase2: "Fase " + currentPhase 
    } 
}); 

Antwort

0

Für solche Fälle Sie nutzen ein computed property machen würde:

import Controller from '@ember/controller'; 
import { computed } from '@ember/object'; 

export default Controller.extend({ 
    currentPhase: 1, 

    strings: computed('currentPhase', function() { 
    let currentPhase = this.get('currentPhase'); 
    return { 
     title: "Title", 
     phase1: `Phase ${currentPhase}`, 
     phase2: `Phase ${currentPhase}` 
    } 
    } 
}); 
+0

Init immer nur einmal ausgeführt wird, da Ihr Standard ist 1 ist die init Aufruf ist redundant, als eine Randnotiz, wenn Sie Methoden aus der überschreiben Basisobjekt ruft immer 'this._super (... Argumente);' auf. Object Controller sind nicht mehr ein Ding, ich verstehe, dass dies nur Benennung ist, aber eine solche Terminologie wird die Menschen verwirren. Holen Sie sich die aktuelle Phase einmal und speichern Sie sie in einer Variablen, es ist nicht nötig, mehrere Get-Aufrufe für den gleichen Wert zu machen. –

0

In Ihrem Fall Sie selfReference in Ihrer init-Funktion definiert haben, aber man versucht, es von außerhalb der Funktion zu erreichen, die verboten ist. Um es von außerhalb der Funktion zu erreichen, müssen Sie es mit der Funktion set auf eine Variable setzen. Sie können auch strings als computed property definieren. Werfen Sie einen Blick auf diese twiddle.

Verwandte Themen