如何通过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'
如果运行我提供的代码段,您将看到元素的类会根据切换条件发生变化,就像您尝试做的那样。这是角度的方式。我将提供代码,以便您可以