Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不上课。我哪里做错了?_Javascript_Css_Angularjs - Fatal编程技术网

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?也可以通过编写例如
  • {$parent.$index+':'+$index}来尝试调试
  • 是..在控制器$scope中。让我试着不工作..在code中更新作为替代,您可以在您的作用域中编写一个函数来返回类名。有点不确定,但作为一般规则,我在控制器中创建函数来管理连接之类的事情,然后在视图中调用这些函数(例如
    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'
        };
    }