Javascript 不上课。我哪里做错了?
我知道这里有很多这样的问题。但我无法指出我哪里做错了Javascript 不上课。我哪里做错了?,javascript,css,angularjs,Javascript,Css,Angularjs,我知道这里有很多这样的问题。但我无法指出我哪里做错了 <li ng-repeat="item in type.sub | orderBy:y" ng-click="openpic($parent.$index, $index)" ng-class="{ 'active': $parent.$index + ':' + $index == current }"> 仍然不起作用 试试2 我有这样的想法: ng-class="{{ $parent.$index + ':' + $inde
<li ng-repeat="item in type.sub | orderBy:y" ng-click="openpic($parent.$index, $index)" ng-class="{ 'active': $parent.$index + ':' + $index == current }">
仍然不起作用
试试2
我有这样的想法:
ng-class="{{ $parent.$index + ':' + $index == $parent.current && 'active' || '' }}"
它显示为ng class=“active”
,但class
属性未更新
试试3
它显示了ng class='highlight'
,但类仍然显示class=“ng绑定ng范围”
试试4
它解决了这个问题,但对于一个简单的开关函数来说似乎有点过头了。还有什么想法吗
试试5
根据主要的mann代码建议,在TRY 4中有效,我做了这些调整,令人惊讶的是,它有效
ng-class="$parent.$index + ':' + $index == $parent.current && 'active' || ''"
那一个有效。完全删除所有大括号???首先,确保获得正确的数据(我从未遇到过这样的数据访问方法);
如果可以,请尝试使用: 或(最佳方式)使用此功能:
ng-class="someFn($parent.$index)"
更新:如果您想访问父级
ng repeat
,最好使用
我希望这会有所帮助;正如评论中所指出的,这不是一个答案,但通常最好的做法是将代码(即使是简单的ternaries)保存在JavaScript块中,而不是HTML中。这通常会使调试您可能遇到的任何问题变得非常容易 例如,您可以将HTML更改为:
<li ng-repeat="..." ng-click="..." ng-class="isActive($parent.$index, $index)">
$scope.menu= function isActive(pidx, idx) {
return {
active: pidx + ':' + idx === $scope.current
};
};
为了达到你想要的结果
如果你更进一步,你可能会意识到这样做更好
$scope.cls.menu = function(pidx, idx) {
return {
active: pidx + ':' + idx === $scope.current,
any: 'other',
dynamic: 'classes',
you: 'need'
};
}
并在视图中适当地调用该函数。在哪个范围中定义了var'current'?如果它在控制器范围内,可能是要编写$parent.current?也可以通过编写例如
ng class=”isActive($parent.$index,$index)”
)我发现这使得调试变得非常简单。是的,它是有效的。但曼恩少校首先指出了同样的事情。很抱歉没有给你答案。我正在等待他将他的评论作为答案,我会选择它,我认为这是公平的。@macher我完全同意=)事实上,这是ng class=”isActive($parent.$index,$index)”给了我这个想法,而不是isActive函数本身。
ng-class="someFn($parent.$index)"
$scope.someFn = function(index){
//index, index:index, index[n] or something else;
return index === $scope.current ? 'active' : '';
};
<li ng-repeat="..." ng-click="..." ng-class="isActive($parent.$index, $index)">
$scope.menu= function isActive(pidx, idx) {
return {
active: pidx + ':' + idx === $scope.current
};
};
$scope.cls.menu = function(pidx, idx) {
return {
active: pidx + ':' + idx === $scope.current,
any: 'other',
dynamic: 'classes',
you: 'need'
};
}