2016-05-17 86 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不好的做法,而且不管这种语言可能具有哪种支持(或缺少它)。话虽如此,阵列是正确的路要走。