角度计算变量名称

Angular evaluate variable name

本文关键字:变量名 计算      更新时间:2023-09-26

我有以下循环:

$scope.loop = ['loopone','looptwo'];
$scope.loopone = {'one', 'two'};
$scope.looptwo = {'three', 'four'};

我在这里循环播放:

<div ng-repeat="slug in loop">
  <div ng-repeat="val in {{ slug }}">{{ val }}</div>
</div>

如何评估第二个ng-repeat内的{{ slug }}

使用 javascript 的括号表示法访问具有键名的属性。 您可以绑定到控制器函数的结果以获取正确的数组。 因此,您的标记可能如下所示:

<div ng-repeat="slug in loop">
  Slug: {{slug}}
  <div ng-repeat="val in getValuesFromSlug(slug)">{{ val }}</div>
</div>

还有javascript:

$scope.getValuesFromSlug = function (slug) {
    return $scope[slug];
}

关于普伦克的演示

使用角度可以评估$eval()方法,它将解决您的问题

<div ng-repeat="slug in loop">
  <div ng-repeat="val in $eval(slug)">{{ val }}</div>
</div>

如@ryanyuyu所述,$scope.loopone$scope.looptwo应该是数组

$scope.loopone = ['one', 'two'];
$scope.looptwo = ['three', 'four'];

如果你的视图中有一个树结构,最简单的方法是在你的控制器中也有一个树。

例:

在控制器中:

$scope.loops = [
    [1,2,3], [4,5,6]
];

在视图:

<div ng-repeat="miniloop in loop">
  <div ng-repeat="val in miniloop">{{ val }}</div>
</div>

这非常容易迭代,并且您可以轻松地从任一深度推送和删除元素(这将立即反映在视图中)。

这样做的方式,尝试使用常量变量,就好像它们是动态创建的一样,将引导您走上意大利面条代码和不可伸缩性的道路。