我知道这里列出了许多类似的问题,但我无法确定我哪里做错了。
<li ng-repeat="item in type.sub | orderBy:y" ng-click="openpic($parent.$index, $index)" ng-class="{ 'active': $parent.$index + ':' + $index == current }">
我们有一个名为
$scope.current
的变量和一个带有编号ID的嵌套菜单,例如1:2,1:3,1:4,2:1,2:2,2:3等等。目标非常简单。如果
$parent.$index:$index
等于$scope.current
,则需要将<li>
设置为活动状态。每当触发openpic($parent.$index, $index)
时,都会设置ID。在CSS中,我们有li.active
类。那么,有人可以告诉我这段代码缺少什么吗?
尝试1:
已尝试:
<li ng-repeat="item in type.sub | orderBy:y" ng-click="openpic($parent.$index, $index)" ng-class="{ 'active': $parent.$index + ':' + $index == $parent.current }">
仍然无法工作。
尝试2
我有类似这样的东西:
ng-class="{{ $parent.$index + ':' + $index == $parent.current && 'active' || '' }}"
并且它显示为ng-class="active"
,但是class
属性没有更新。
尝试3
ng-class="{{ $parent.$index + ':' + $index == $parent.current && 'highlight' || '' }}"
它显示ng-class='highlight'
,但class仍然显示为class="ng-binding ng-scope"
第四次尝试
ng-class="isActive($parent.$index,$index)"
这解决了问题,但对于一个简单的开关功能来说似乎有点过头了。还有其他想法吗?
尝试5
根据major-mann代码建议,在尝试4的基础上做了一些调整,令人惊讶的是,它起作用了。
ng-class="$parent.$index + ':' + $index == $parent.current && 'active' || ''"
那个方法有效。完全删除了所有大括号???
ng-class="isActive($parent.$index, $index)"
)。我发现这样做可以让调试变得非常简单。虽然这不是一个很具体的回答,但希望对您有所帮助。 - major-mann