2013-04-17 2 views
8

angularjs 컨트롤러의 DOM 변경은 좋지 않습니다. 내 응용 프로그램에서 링크를 클릭 한 후 ngView에서 html 요소의 클래스를 변경하고 있습니다. 의도 한 행동은, 내가 세 div를 가지고, 중간 하나가 표시됩니다 또는 변경하는 경우입니다. 나는 컨트롤러에서 이것을하고있다. 나는 DOM 조작을 지시문에서 수행해야한다는 것을 읽었지만 내 마음은 해결책을 찾기에 충분하지 않다. 제발, 제안이 있으면 기쁠거야.AngularJS에서 CSS 변경

답변

9

ng-class을 사용하십시오.

예 :

http://jsfiddle.net/rd13/eTTZj/75/

app = angular.module('myApp', []); 

app.directive("click", function() { 
    return function(scope, element, attrs) { 
     element.bind("click", function() { 
      scope.boolChangeClass = !scope.boolChangeClass; 
      scope.$apply(); 
     }); 
    }; 
}); 

일부 HTML :

<div id="page"> 
    <div>One</div> 
    <div ng-class="{'my-class':boolChangeClass}">Two</div> 
    <div>Three</div> 
    <button click>Click me</button> 
</div> 

버튼을 클릭하면, 중앙 DIV의 클래스 내에서 설정 boolen 값에 따라 변경됩니다 범위.

+0

감사합니다. 그래서 많은 리팩토링이 필요하지 않습니다. –

+1

@MartinPalis이 답변은 부분적으로 정확합니다. ng-class를 사용해야합니다.하지만 클릭 지정 문을 사용하는 대신 ng-click을 사용해야합니다 ... – ganaraj

+0

감사합니다. ganaraj, 맞습니다. –