angular.js - 關於指令link 中的創建變數問題
phpcn_u1582
phpcn_u1582 2017-05-15 17:03:33
0
2
696
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

全部回覆(2)
给我你的怀抱

改:

elem.find("p").on("click",function(){
    scope.show=!scope.show;
    scope.$apply();
});

補充:

看文件

文檔說了,如果是controller里的同步操作,或者是通过$http$timeout$interval的异步操作,scope.$apply()是自动执行的(Angular帮你做了)。但你这里显然不符合条件,你使用了DOM API,所以需要手动显示的调用一下scope.$apply()

文檔地址: scope

漂亮男人

謝謝指教,看了文檔ng 自己很多自己的方法都會觸發apply,dom,累死settimeout的操作不會觸發apply

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板