花了一些时间寻找答案,抓了几行不同的示例代码,它也只是出错了。
目标:
点击按钮>按钮添加了类"活动"到一个div。在div.active里面还有另一个元素,它有一个从div.active
中删除.active的函数HTML:
<body ng-app="myApp">
<div ng-controller="myCtrl">
<button ng-click="slidePanel='active'">Open Div 1</button>
<div class="div1" ng-class="slidePanel">
<div class="close" ng-click="removeActive()">Close</div>
Hi I'm a Slide Panel
</div>
</div>
</body>
JS:
angular.module('myApp', [])
.controller('myCtrl', ['$scope', function ($scope) {
$scope.removeActive = function () {
//Errors with Element is not defined
/*var myEl = angular.element(element.getElementsByClassName('div1'));
myEl.removeClass('active');*/
//Errors with myEl.removeClass is not a function
var myEl = document.getElementsByClassName('div1');
myEl.removeClass('active');
//Errors with [jqLite:nosel] Looking up elements via selectors is not supported by jqLite!
/*var myEl = angular.element('div1');
myEl.removeClass('active');*/
//Errors with Element is not defined
/*var query = element[0].querySelector('.div1');
var wrappedQueryResult = angular.element(query);
query.removeClass('active');*/
}
}]);
不确定我在这里做错了什么。
答案 0 :(得分:1)
如果使用ng-class
<button ng-click="slidePanel=!slidePanel">Toggle Div 1</button>
<div class="div1" ng-class="{active:slidePanel}">
<div class="close" ng-click="slidePanel=!slidePanel">Toggle</div>
Hi I'm a Slide Panel
</div>
不应在控制器中完成DOM操作。始终首先考虑范围,angular有大量工具来管理基于范围模型的dom
ng-class="{active:slidePanel}
正在做的是根据表达式active
slidePanel
的 DEMO 强>
答案 1 :(得分:0)
如果您不想使用对象表示法(这是我首选的方法),您也可以将slidePanel设置回空字符串以删除该类。
<div class="close" ng-click="slidePanel=''">Close</div>