2016-05-17 8 views
0

私はスコープ変数を宣言して初期化しましたが、動的にアクセスしたいのですが、htmlファイルから変数にアクセスしようとするとその変数は文字列として扱われます。

JSコード -

$scope.abc3txt = "Hello"; 
$scope.abc2txt = "hello everyone"; 
$scope.abc1txt = "hello 123"; 

ABC "数" テキストの間の3,2,1のようなすべての変数との数があります。

私のHTMLファイルの番号に応じて変数値にアクセスしたいとします。

HTMLは

<h4>{{abc+a.status+txt}}</h4> 

a.statusが代わりに「$スコープの初期化値を返すので、1,2または3

のようないくつかの値、HTMLの "abc3txt" のようなこのプリントを持っているコード - .abc3txt "変数。

誰かが助けてください..

+0

配列またはオブジェクトを使用してください!変数は狂気です。 $ scope.abc [3] = 'Hello' '、あるいはおそらく '$ scope.abc = [' Hello '、' hello。 ..、..] '。これは明白にアクセスできます。 – deceze

+0

まだ@kiro112です。これを試してみる – sajalsuraj

答えて

3

$scopeで直接実行できるかどうかわかりません。方法は、対象に、これらの値を保存するには、次のようになります。

$scope.values = { 
    abc3txt: "Hello", 
    abc2txt: "hello everyone", 
    abc1txt: "hello 123" 
}; 

そして、あなたで、あなたがこのようにそれらにアクセスすることができ表示:

{{values['abc' + a.status + 'txt']}} 

EDIT: 最善の選択肢はcontrollerAs構文を使用することです。あなたは、コントローラであるとします。

var vm = this; 
vm.abc3txt = "Hello"; 
vm.abc2txt = "hello everyone"; 
vm.abc1txt = "hello 123"; 

次に、あなたのビューで:あなたが求めている方法で、変数名の {{vm['abc' + a.status + 'txt']}}

+0

HTMLから、intermedairyフィールドが必要です。 ** controllerAs **構文を使用する必要があります。 – Walfrat

+0

はい、controllerAs構文は良い選択肢になります。 –

+0

";"オブジェクト内のセミコロン、コンマのみ使用できますか? – sajalsuraj

3

あなた絶対にこのような
何かが役立つはず...配列を使用することを検討して...
をJavaScriptで、そのようnamese変数を使用shouln't:

でコントローラ:

$scope.a = {}; 
$scope.a.status = 2; 
$scope.abctxt = [ "hello 123", "hello everyone", "Hello" ]; 

そして、テンプレート内:

<h4>{{ abctxt[a.status - 1] }}</h4> 
+0

なぜa.status - 1 – sajalsuraj

+0

あなたの変数の名前に1、2、3を使用しただけなので、あなたの配列は1ベースであったと思います。 0から始まる場合(0,1,2、...)、 '-1'を避けることができます... – MarcoS

3

動的な生成は、すべての可能な視点で、非常に、非常にあり、SUPER-VERY悪い習慣、そしてこれは言語が持つかもしれないサポート(またはその欠如)にかかわらずです。そのことを言えば、配列は正しい方法です。

関連する問題