例如,我需要将一些CSS规则应用于要选择的集合的一个元素。
<div ng-repeat="fragments" ng-click="makeSelected()"></div>
$scope.fragments = [
{id: 6379, someProperty: "someValue" },
{id: 8934, someProperty: "someValue" },
{id: 1654, someProperty: "someValue" },
{id: 5654, someProperty: "someValue" }
];
$scope.selectedFragmentId = 6379;
makeSelected
函数的明显实现是将类名selected
附加到已单击的div,然后通过其他元素启动循环并从中删除类名selected
。
我还需要选择&#34;没有点击它们的特定div,只能通过在某个函数中传递所选片段的id。显然,这个函数也必须有一个遍历片段的循环,并将selectedFragmentId
与每个片段ID进行比较。
我的方法看起来不错,但我有一种不好的感觉,它是如此迫切而不是声明。这不是angularjs精神的方式。所以,这里有一个问题:有没有办法以声明的方式实现我的functionallity,而不使用循环?
答案 0 :(得分:1)
你不需要任何循环。
<div ng-class="{selected: fragment.id == selectedFragmentId}" ng-repeat="fragment in fragments" ng-click="makeSelected()"></div>
然后,如果您设置$scope.selectedFragmentId
,则所选片段的div会自动将类设置为selected