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

reply all(2)
给我你的怀抱

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

漂亮男人

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

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template