Angular ng-class没有更新
Angular ng-class isn't updating
有人可以帮助我理解为什么我的ng-click
不更新类吗?
heading.onClick()
更新控制器的isOpen
属性。当它为 false 时,类不会删除 collapsed
属性。
.... (this is inside a controller aliased `heading`)
<div ng-class="{'collapsed': !heading.isOpen}" ng-click="heading.onClick()"></div>
directive:
...
templateUrl: '/that/code/above',
controllerAs: 'heading',
controller: function(){
var self = this;
self.isOpen = false;
self.onClick = function(){
self.isOpen = !self.isOpen;
};
}
在你的方案中,只有几件事是错误的。
-
您的引号可能需要转义,因为您正在交替在单和双之间几次,或者您可能需要使用模板而不是模板URL
-
如果您使用的是角度 1.3+,而不是将自己分配给它,而是将自己分配给它可以使用 scope: true 属性,并使用"this"。
function myDirective() {
return{
restrict: 'AE',
template: "<div ng-class='{'"collapsed'": !heading.isOpen}' ng-click='heading.onClick()'>Click on me</div>",
scope: true,
controller: function(){
this.isOpen = false;
this.onClick = function(){
this.isOpen = !this.isOpen;
// in some situations you might need to call $apply() to get it to digest changes.
// for example if you change isOpen through a non-angular click angular wouldn't know
// to update the class until you call this.$apply()
//this.$apply();
};
},
controllerAs: 'heading'
};
}
var app = angular.module('app', [])
.directive('myDirective', [myDirective]);
.collapsed {
color: red;
}
<!DOCTYPE html>
<html >
<head>
<link rel="stylesheet" href="style.css">
</head>
<body ng-app="app">
<my-directive></my-directive>
<script src="https://code.angularjs.org/1.4.0/angular.js"></script>
<script src="script.js"></script>
</body>
</html>
在您的情况下,您可能不需要担心这一点,但我遇到了一个场景,我不得不调用 $scope.$apply()(或 this.$apply()) 来通知 angular 我的变量在它不知情的情况下发生了变化。
相关文章:
- 如何为动态创建的文本区域中输入的值更新ng模型
- 在数据更改时更新ng重复
- 每个点击的项目上的“ng-class”
- 在所选元素的父元素上添加“ng-class”
- ng-class 在 angularJs 中由 ng-include 包含的文件内不起作用
- Angular ng-class没有更新
- 使用输入更新 ng 模型数据
- Angularjs在更改ng之前需要更新ng模型
- ng-class not working properly in 'AngularJs'
- 通过使用ng if更新ng repeat加载程序
- 如何在Angularjs中使用ng选项时更新ng模型
- 如何访问Angular JS模板指令中设置的值,如“ng class?”
- 在angularjs复选框输入中更新ng模型或执行ng更改之前需要确认
- AngularJS没有't在Django管理日期小部件上的jQuery事件后更新ng模型
- 如果值为true,AngularJS将更新ng模型
- 如何只更新ng repeat中的部分元素
- 如何在AngularJS中使用ng-class仅在特定页面上向元素添加类
- ng-class 的函数表达式在 ng-click 时被调用
- Angular ng-class 呈现正确的类,但 Karma 显示错误
- Angularjs指令:如何在属性改变后更新模板中的ng-class