如何通过javascript更改ng点击状态?

如何通过javascript更改ng点击状态?,javascript,angularjs,Javascript,Angularjs,如果条件为真,我需要让代码工作 if document.getElementByClass('toggle').style.visibility == 'visible' 它应该像是在我的页面上写的 ng-click="toggle = !toggle" 但是如何在javascript文件中选择切换状态呢 编辑:更多信息 div(ng-controller='ViewsCtrl', ng-class="toggle ? 'nav-open' : 'nav'") .container

如果条件为真,我需要让代码工作

if document.getElementByClass('toggle').style.visibility == 'visible'
它应该像是在我的页面上写的

ng-click="toggle = !toggle"
但是如何在javascript文件中选择切换状态呢

编辑:更多信息

div(ng-controller='ViewsCtrl', ng-class="toggle ? 'nav-open' : 'nav'")
  .container
    .logo
      img(src='images/logo.png')
      span Motto

    ul(ng-class="toggle ? 'menu-open' : 'menu'")
      li
        a(ng-click="changeView('home')") Home
      li
        a(ng-click="changeView('products')") Products

    button.toggle(ng-click='toggle = !toggle') Menu
控制器

appControllers.controller 'ViewsCtrl', [
  '$scope'
  '$location'

  Ctrl = ($scope, $location) ->

    $scope.changeView = (view) ->
      $location.path view
      if document.getElementByClass('toggle').style.visibility == 'visible'
        $scope.toggle = !toggle
      return

    return

]
看看这个:


展示
看看这个:


展示

如果要在类之间切换,则需要使用
ng类

如其他答案所述,通过使用
ng show
,您实际上不会将元素
可见性
设置为
隐藏
可见
,而是将元素样式
显示
设置为
继承
。为了设置元素的
可见性
样式,我建议声明您自己的类并使用
ng类


.不可见{
可见性:隐藏;
}
.可见{
能见度:可见;
}
展示

如果要在类之间切换,则需要使用
ng类

如其他答案所述,通过使用
ng show
,您实际上不会将元素
可见性
设置为
隐藏
可见
,而是将元素样式
显示
设置为
继承
。为了设置元素的
可见性
样式,我建议声明您自己的类并使用
ng类


.不可见{
可见性:隐藏;
}
.可见{
能见度:可见;
}
展示

您应该在控制器中执行逻辑,而不是在ng中执行逻辑,如下所示:

$scope.changeView = {
    class: 'menu-closed',
    toggleMenu: function() {
        $scope.changeView.class = ($scope.changeView.class === "menu-closed") ? "menu-open" : "menu-closed";
    }
};
您的html将是:

<ul ng-class="changeView.class"></ul>
<button ng-click="changeView.toggleMenu()">toggle menu</button>
      切换菜单
这将保持您的HTML干净,并保持控制器中的所有逻辑,它应该在哪里


下面是一个显示上述内容的示例:

您应该在控制器中执行逻辑,而不是在ng中执行逻辑,如下所示:

$scope.changeView = {
    class: 'menu-closed',
    toggleMenu: function() {
        $scope.changeView.class = ($scope.changeView.class === "menu-closed") ? "menu-open" : "menu-closed";
    }
};
您的html将是:

<ul ng-class="changeView.class"></ul>
<button ng-click="changeView.toggleMenu()">toggle menu</button>
      切换菜单
这将保持您的HTML干净,并保持控制器中的所有逻辑,它应该在哪里


下面是一个显示上述内容的示例:

try ng click=“function(toggle){toggle=!toggle}”不,它们不起作用:-/您不需要在控制器中处理切换逻辑,并且基于
$scope的状态。基于元素的
可见性
样式的切换稍微向后。您应该根据
$scope的状态切换元素的可见性。切换类似于:
if($scope.toggle)element.style.visibility='visible'
。我建议在您的视图中使用
ng类
,而不是在控制器中处理此问题。这不是通常认为的控制器逻辑。请查看我的答案,实现
ng class
切换类。@WebLoverner我明白你的意思,但我使用这种非标准(甚至可能是错误的?)方式来实现我所需要的,因为这只会在网页布局处于移动模式时触发,否则这些菜单链接将混合移动和桌面样式(黑色背景的汉堡包导航(手机),覆盖水平和页面顶部的导航(桌面)),如果您希望您的答案基于“手机”或“桌面”模式,那么你应该在你的问题中说明。说实话,我甚至不知道你现在想做什么,也不知道你在控制器中使用的非正统语法。try ng click=“function(toggle){toggle=!toggle}”不,它们不起作用:-/您不需要在控制器中处理切换逻辑,并且基于
$scope的状态。在元素的
可见性上切换
样式稍微向后。您应该基于
$scope的状态切换元素的可见性。切换
有点像:
if($scope.toggle)element.style.visibility='visible'
。我建议在您的视图中使用
ng类
,而不是在您的控制器中处理此问题。这不是通常认为的控制器逻辑。请查看我的答案,实现
ng类
来切换类。@WebWander我明白您的观点,但我使用的是非标准的(甚至可能是错误的?)实现我所需要的功能的方法,因为这应该只在网页布局处于移动模式时触发,否则这些菜单链接将混合移动和桌面样式(黑色背景的汉堡包导航(移动),覆盖页面的水平和顶部导航(桌面))如果你想让你的答案基于“移动”或“桌面”模式,那么你应该在你的问题中说明。老实说,我甚至不知道你现在想做什么,也不知道你在控制器中使用的非正统语法。如前所述(在你回答之前1分钟),我不需要此指令,因为我使用此代码在两个类之间切换。如前所述(u回复前1分钟),我不需要这个指令,因为我使用这个代码在两个类之间切换。是的,但我问如何用我的javascript代码控制切换,因为我必须让它只在语句为true时运行,并且只在语句为true时运行,即使不受javascript控制。通过使用
ng class
它由Angular的javascript控制。
ng类中的表达式可能有有趣的语法,但语句的结尾相同:
if(!$scope.toggle)element.className='notvisible'else element.className='visible'
如果运行我提供的代码段,您将看到元素的类会根据切换条件发生变化,就像您尝试做的那样。这是角度的方式。我将提供代码,以便您可以