Javascript 角度ng类为';t更新

Javascript 角度ng类为';t更新,javascript,angularjs,Javascript,Angularjs,有人能帮我理解为什么我的ng click没有更新类吗 heading.onClick()更新控制器的isOpen属性。如果为false,则类不会删除折叠的属性 .... (this is inside a controller aliased `heading`) <div ng-class="{'collapsed': !heading.isOpen}" ng-click="heading.onClick()"></div> directive: ... tem

有人能帮我理解为什么我的
ng click
没有更新类吗


heading.onClick()
更新控制器的
isOpen
属性。如果为false,则类不会删除
折叠的属性

 .... (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;
    };
}
。。。。(这在别名为“heading”的控制器内)
指令:
...
templateUrl:“/that/code/over”,
controllerAs:'标题',
控制器:函数(){
var self=这个;
self.isOpen=false;
self.onClick=function(){
self.isOpen=!self.isOpen;
};
}

在您的场景中,只有几件事出错

  • 您的报价可能需要转义,因为您是交替的 在单倍和双倍之间切换几次,或者您可能需要使用template而不是templateUrl

  • 如果您使用的是angular 1.3+,而不是将self指定给此 可以使用scope:true属性,并使用“this”

  • 函数myDirective(){
    返回{
    限制:“AE”,
    模板:“点击我”,
    范围:正确,
    控制器:函数(){
    this.isOpen=false;
    this.onClick=函数(){
    this.isOpen=!this.isOpen;
    //在某些情况下,您可能需要调用$apply(),以使其消化更改。
    //例如,如果通过非角度单击更改等参线,则角度将不知道
    //在调用此函数之前更新类。$apply()
    //这个。$apply();
    };
    },
    controllerAs:“标题”
    };
    }
    var app=angular.module('app',[])
    .指令('myDirective',[myDirective])
    
    。已折叠{
    颜色:红色;
    }
    
    
    “当它为false时,类不会删除
    折叠的属性”-这是因为您有
    !标题.isOpen
    。打字错误?我看不到你的指令在div.上使用。。打字错误?@UlukBiy,据我所知,
    是指令的一部分template@NewDev你是对的。请发布一个plunkr或jsfiddle。