2016-05-17 96 views
0

我已經聲明並初始化了幾個Scope變量並想動態訪問它們,但是當我嘗試從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] = {txt:'Hello'}',或者只是'$ scope.abc [3] ='Hello''或者可能只是'$ scope.abc = ['Hello','你好。 ..',..]'。這可以毫不含糊地訪問。 – deceze

+0

尚未@ kiro112 ..試試這個 – sajalsuraj

回答

3

我不知道是否可以直接用$scope來完成。一種方法是保存在一個對象的值:

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

而且在您查看,你可以像這樣訪問他們:

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

編輯: 的最佳替代方案是使用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

你絕對shouln't使用變量namese這種方式,在javascript ...
考慮使用數組...
像這樣的東西應該有所幫助:

在控制器:

$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不好的做法,而且不管這種語言可能具有哪種支持(或缺少它)。話雖如此,陣列是正確的路要走。

相關問題