Maison > Questions et réponses > le corps du texte
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);
});
}
}
})
Comme le montre la question, je crée maintenant un show variable dans le lien. Ce show est utilisé dans le modèle pour indiquer si hide ou scope.show affiche toujours true ?
Je ne sais pas où se situe le problème, donnez-moi quelques conseils ! Merci
Mais console.log (scope.show) change de manière synchrone
给我你的怀抱2017-05-15 17:05:33
Modifier :
elem.find("p").on("click",function(){
scope.show=!scope.show;
scope.$apply();
});
Supplément :
Lire la documentation
.Le document dit que s'il s'agit d'une opération synchrone en
controller
, ou d'une opération asynchrone via$http
,$timeout
,$interval
,scope.$apply()
est automatiquement exécuté (Angular
vous aide a fait). Mais vous ne remplissez évidemment pas les conditions ici. Vous avez utiliséDOM API
, vous devez donc afficher et appeler manuellementscope.$apply()
Adresse du document : champ d'application
漂亮男人2017-05-15 17:05:33
Merci pour le conseil. Après avoir lu la documentation, beaucoup de mes propres méthodes déclencheront apply et dom. L'opération de settimeout ne déclenchera pas apply
.