angular.js - 关于指令link 中的创建变量问题
phpcn_u1582
phpcn_u1582 2017-05-15 17:03:33
0
2
684
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)是同步改变的啊

phpcn_u1582
phpcn_u1582

répondre à tous(2)
给我你的怀抱

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 manuellement scope.$apply()

.

Adresse du document : champ d'application

漂亮男人

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

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal