如何展开/折叠Angular中的所有行
我已经成功创建了一个函数来切换我的各个行ng-table
以使用以下方式打开和关闭:
TestCase.prototype.toggle = function() { this.showMe = !this.showMe;
}
和
<tr ng-repeat="row in $data"> <td align="left">
<p ng-click="row.toggle();">{{row.description}}</p>
<div ng-show="row.showMe">
有关更多代码,请参见plunkr。请注意,“菜单”中的展开/折叠按钮。
但是,我现在想不出一种方法来打开和关闭所有行。我希望能够以某种方式在行上运行for循环,然后在需要时调用toggle,但是我这样做的尝试失败了。在下面看到它们:
TestCase.prototype.expandAllAttemptOne = function() { for (var row in this) {
if (!row.showMe)
row.showMe = !row.showMe;
}
}
function expandAllAttemptOneTwo(data) {
for (var i in data) {
if (!data[i].showMe)
data[i].showMe = !data[i].showMe;
}
}
关于如何正确切换所有行的任何想法?
回答:
将该ng-show
指令与ng-click
和ng-init
指令结合使用,我们可以执行以下操作:
<div ng-controller="TableController"> <button ng-click="setVisible(true)">Show All</button>
<button ng-click="setVisible(false)">Hide All</button>
<ul>
<li ng-repeat="person in persons"
ng-click="person.visible = !person.visible"
ng-show="person.visible">
{{person.name}}
</li>
</ul>
</div>
我们的控制器可能如下所示:
myApp.controller('TableController', function ($scope) { $scope.persons = [
{ name: "John", visible : true},
{ name: "Jill", visible : true},
{ name: "Sue", visible : true},
{ name: "Jackson", visible : true}
];
$scope.setVisible = function (visible) {
angular.forEach($scope.persons, function (person) {
person.visible = visible;
});
}
});
我们在这里做两件事。首先,我们的控制器包含一个person
对象数组。这些对象每个都有一个名为的属性visible
。我们将使用它来打开和关闭项目。其次,我们在名为的控制器中定义一个函数setVisible
。这将使用布尔值作为参数,并将遍历整个persons
数组并将每个person
对象的visible
属性设置为该值。
现在,在我们的html中,我们使用了三个angular指令;ng-click
,ng-repeat
和ng-
show。看来您已经有点知道这些是如何工作的,所以我只想解释一下我对它们的处理方式。在我们的html中,我们用于ng-
click为“全部显示”和“全部隐藏”按钮设置点击事件处理程序。单击其中任何一个将导致setVisible
调用true或false值。这将用于切换所有列表项的全部打开或全部关闭。
接下来,在ng-
repeat指令中,我们提供了一个angular表达式,用于单击列表项时进行评估。在这种情况下,我们告诉angular切换person.visible
到当前的相反值。这将有效地隐藏列表项。最后,我们有了我们的ng-
show指令,该指令与我们的visible
属性一起简单地用于确定是否呈现特定的列表项。
这是一个带有工作示例的plnkr:http
://plnkr.co/edit/MlxyvfDo0jZVTkK0gman?p=preview
该代码是您可能会做的一般示例,您应该可以对其进行扩展以适合您的特定需求。希望对您有所帮助!
以上是 如何展开/折叠Angular中的所有行 的全部内容, 来源链接: utcz.com/qa/427955.html