$scope变量被视为字符串AngularJs

$scope variable is treated as string - AngularJs

本文关键字:字符串 AngularJs scope 变量      更新时间:2023-09-26

我已经声明并初始化了一些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"一样打印,而不是返回"$scope.abc3txt"变量的初始化值。

请有人帮忙。。

我不知道是否可以直接用$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']}}

从所有可能的角度来看,以您所寻求的方式动态生成变量名是一种非常非常、SUPER-very的糟糕做法,无论语言是否支持(或缺乏支持)。话虽如此,数组是正确的选择。

在javascript中,绝对不应该以这种方式使用变量名称
考虑使用数组
这样的东西应该会有所帮助:

在控制器中:

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

并且,在模板中:

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