gpt4 book ai didi

AngularJS:在 ng-repeat 生成的范围中设置变量

转载 作者:行者123 更新时间:2023-12-02 14:41:44 24 4
gpt4 key购买 nike

如何访问 ng-repeat 生成的范围集?

我想问题的核心是我不太明白 a) 我传递到 ng-repeat 指令的对象集合和 b) 它生成的范围集合之间的关系是如何工作的。我可以使用 (a),ng-repeat 作用域会监视并拾取该作用域,但是如何在作用域本身 (b) 上设置变量?

我的用例是,我有一组使用 ng-repeat 重复的元素,每个元素都有一个使用 ng-show/ng-hide 切换的编辑 View ;每个元素的状态都保存在局部范围内的变量中。我希望能够在特定元素上触发 ng-show,但我希望从 ng-repeat 外部调用触发器,因此我需要能够访问本地作用域变量.

谁能指出我正确的方向(或者告诉我我是否找错了方向)?

谢谢

更新:下面的链接非常有帮助,谢谢。最后,我为每个重复元素创建了一个指令,并使用该指令的链接函数将其范围添加到根范围上的集合中。

最佳答案

这是一种非常简单的方法来完成我认为您正在尝试做的事情(当我需要做类似的事情时我发现了这一点):

我们知道每个重复项都有为其创建的自己的范围。如果我们可以将此作用域传递给父作用域上定义的方法,那么我们就可以用它来执行我们想要的操作或添加属性。事实证明,这可以通过传递 this 作为参数来完成:

示例

// collection on controller scope
$scope.myCollection = [
{ name: 'John', age: 25 },
{ name: 'Barry', age: 43 },
{ name: 'Kim', age: 26 },
{ name: 'Susan', age: 51 },
{ name: 'Fritz', age: 19 }
];



// template view
<ul>
<li ng-repeat="person in myCollection">
<span ng-class="{ bold : isBold }">{{ person.name }} is aged {{ person.age }} </span>
<button class="btn btn-default btn-xs" ng-click="toggleBold(this)">toggle bold</button>
</li>
</ul>

因此,当我们按下“切换粗体”按钮时,我们正在调用需要在 Controller 的 $scope 上定义的 $scope.toggleBold() 方法。请注意,我们将 this 作为参数传递,它实际上是当前的 ng-repeat scope 对象。

因此我们可以像这样操纵它

$scope.toggleBold = function(repeatScope) {
if (repeatScope.isBold) {
repeatScope.isBold = false;
} else {
repeatScope.isBold = true;
}
};

这是一个工作示例:http://plnkr.co/edit/Vg9ipoEP6wxG8M1kpiW3?p=preview

关于AngularJS:在 ng-repeat 生成的范围中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com