$ scope变量被视为字符串 - AngularJs

时间:2016-05-17 08:22:53

标签: javascript html angularjs

我已声明并初始化了几个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”变量的初始化值。

请有人帮忙..

3 个答案:

答案 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)

从所有可能的角度来看,以您所寻求的方式动态生成变量名称是一种非常非常超级不良做法,而且无论如何语言可能具有的支持(或缺乏支持)。话虽如此,阵列是正确的方法。