angular.module("myDirective",[])
.directive("tabOne",function (){
return{
restrict:"E",
replace:true,
scope:{
data:"=myData",
},
transclude:true,
template:' <p ng-hide="show">'+
'<p ng-repeat="x in data">'+
'{{x}}'+
'</p>'+
'</p>',
link:function(scope,elem,attr){
scope.show=true;
elem.find("p").on("click",function(){
scope.show=!scope.show;
console.log(scope.show);
});
}
}
})
如问题所示我现在,在link创建一个变量show,这个show用在模板表示是否hide可是 scope.show一直显示true?
不知道问题出现在哪里求赐教给位!谢谢
但是console.log(scope.show)是同步改变的啊
给我你的怀抱2017-05-15 17:05:33
Changed:
elem.find("p").on("click",function(){
scope.show=!scope.show;
scope.$apply();
});
Added:
See the documentation
The document says that if it is
controller
里的同步操作,或者是通过$http
、$timeout
、$interval
的异步操作,scope.$apply()
是自动执行的(Angular
帮你做了)。但你这里显然不符合条件,你使用了DOM API
,所以需要手动显示的调用一下scope.$apply()
Document address: scope
漂亮男人2017-05-15 17:05:33
Thank you for the advice. After reading the documentation, many of my own methods will trigger apply, dom, and the exhaustive settimeout operation will not trigger apply