我已声明并初始化了几个Scope变量,并希望动态访问它们,但是当我尝试从html文件访问变量时,该变量被视为字符串。
JS Code-
$scope.abc3txt = "Hello";
$scope.abc2txt = "hello everyone";
$scope.abc1txt = "hello 123";
abc“number”文本之间的每个变量都有一个数字,如3,2,1。
我想根据我的html文件中的数字访问变量值。
HTML代码 -
<h4>{{abc+a.status+txt}}</h4>
a.status有一些像1,2或3的值。
这打印在html中的“abc3txt”,而不是返回“$ scope.abc3txt”变量的初始化值。
请有人帮忙..
答案 0 :(得分:3)
你绝对不能以这种方式使用变量namese,在javascript ...
中
考虑使用数组...
这样的事情应该会有所帮助:
在控制器中:
$scope.a = {};
$scope.a.status = 2;
$scope.abctxt = [ "hello 123", "hello everyone", "Hello" ];
并且,在模板中:
<h4>{{ abctxt[a.status - 1] }}</h4>
答案 1 :(得分: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']}}
答案 2 :(得分:3)
从所有可能的角度来看,以您所寻求的方式动态生成变量名称是一种非常非常,超级不良做法,而且无论如何语言可能具有的支持(或缺乏支持)。话虽如此,阵列是正确的方法。