angulaire.js - Concernant la question de la création de variables dans la directive Link
phpcn_u1582
phpcn_u1582 2017-05-15 17:03:33
0
2
694
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

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