Angularjs ng类和ng单击不一起工作

Angularjs ng类和ng单击不一起工作,angularjs,Angularjs,我对ng类和ng单击在一起有问题。我想在单击按钮时将类添加到div,但它不起作用。这是我的密码: <header> <div id="headerContainer"> <button ng-click="toggle = !toggle">Toggle</button> </div> </header> <nav ng-class="{'myClassName' : togg

我对ng类和ng单击在一起有问题。我想在单击按钮时将类添加到div,但它不起作用。这是我的密码:

    <header>
    <div id="headerContainer">
        <button ng-click="toggle = !toggle">Toggle</button>
    </div>
</header>

<nav ng-class="{'myClassName' : toggle}"></nav>

切换
有什么奇怪的?当我将ng类添加到我的按钮时,它会在按钮上切换类,但我的
仍然无法获取类:

<button ng-click="toggle = !toggle" ng-class="{'myClassName' : toggle}">Toggle</button>
切换

如何使其工作以及为什么不能正常工作?

切换=!切换不会修改控制器中的$scope.toggle

您需要编写一个控制器方法来修改$scope.toggle


背后的原因是,您正在访问的范围不是$scope.toggle,而是它的子项。要修改$scope.toggle,您只能在控制器中执行此操作,请查看下面的工作代码示例。请参阅@Pierre Emmanuel Lallemant了解您的代码片段不起作用的原因

var-app=angular.module('myApp',[])
app.controller('mainCtrl',['$scope',函数($scope){
$scope.toggle=false;
$scope.changeToggle=函数(){
$scope.toggle=!$scope.toggle;
}
}])

.myClass{
颜色:红色;
}
切换

这就是你的意思吗

var myApp=angular.module('myApp',[]);
函数MyCtrl($scope){
}

切换

前面已经提到过,但是如果您的
切换
变量在另一个作用域中声明(嵌套更深),则您将无法从导航菜单访问它

有两种方法可以解决这个问题。您可以将变量添加到控制器中(有些人建议这样做),因为它将使变量在顶层为人所知并可供所有子作用域访问,或者您可以使用
ng init
在外部控制器的元素上简单地初始化/提升它


当您只发布部分设置时,确实很难提供帮助,因为错误/问题不在于您发布的内容,而在于未发布的内容:)

您能显示控制器吗?.toggle=!切换不会修改控制器中的$scope.toggle。您需要编写一个控制器方法来修改$scope.toggle。背后的原因是,您正在访问的范围不是$scope.toggle,而是它的子项。要修改$scope.toggle,您只能在controller.show-us-more-code中执行此操作?控制器?给我们看看你的myClassName?也许它正在设置类,但是css没有按预期显示?没有控制器。我想这样做:)您假设他正在使用嵌套作用域。我认为你是对的,但是你的陈述在任何情况下都是真实的——事实并非总是如此。你的解决方案对我来说是最好的。谢谢大家,伙计们!