2017-11-13 11 views
0

Emberコントローラで変数にアクセスするにはどうすればよいですか?私は、これらの方法を試してみたが、それは動作しません :お使いの場合にはEmberコントローラの変数へのアクセス

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

答えて

0

:初期化コール1である、あなたのデフォルトであるため

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がしか、一度実行されるには、あなたがからメソッドを上書きサイドノートとして、冗長ですベースオブジェクトは常に 'this._super(... arguments); 'を呼び出します。 オブジェクトコントローラはもはやものではありません。これは名前にすぎませんが、このような用語は人々を混乱させることを理解しています。 現在のフェーズを一度取得して変数に保存すると、同じ値に対して複数の 'get'呼び出しを行う必要はありません。 –

0

、あなたのinit関数でselfReferenceを定義しているが、あなたは禁止されている機能の外部からそれに到達しようとしました。関数の外側から到達させるには、set関数を使用して変数に設定する必要があります。 stringscomputed propertyとして定義することもできます。このtwiddleをご覧ください。あなたがcomputed propertyを利用するだろうこのような場合のために

関連する問題