angular.js - 關(guān)于指令link 中的創(chuàng)建變量問(wèn)題
問(wèn)題描述
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);}); }} })
如問(wèn)題所示我現(xiàn)在,在link創(chuàng)建一個(gè)變量show,這個(gè)show用在模板表示是否hide可是 scope.show一直顯示true?不知道問(wèn)題出現(xiàn)在哪里求賜教給位!謝謝但是console.log(scope.show)是同步改變的啊
問(wèn)題解答
回答1:改:
elem.find('p').on('click',function(){ scope.show=!scope.show; scope.$apply();});
補(bǔ)充:
看文檔
文檔說(shuō)了,如果是controller里的同步操作,或者是通過(guò)$http、$timeout、$interval的異步操作,scope.$apply()是自動(dòng)執(zhí)行的(Angular幫你做了)。但你這里顯然不符合條件,你使用了DOM API,所以需要手動(dòng)顯示的調(diào)用一下scope.$apply()
文檔地址: scope
回答2:謝謝指教,看了文檔ng 自己很多自己的方法都會(huì)觸發(fā)apply,dom,累死settimeout的操作不會(huì)觸發(fā)apply
相關(guān)文章:
1. php怎么連接數(shù)據(jù)庫(kù)2. 在視圖里面寫(xiě)php原生標(biāo)簽不是要迫不得已的情況才寫(xiě)嗎3. fetch_field_direct()報(bào)錯(cuò)4. 為什么點(diǎn)擊登陸沒(méi)反應(yīng)5. 多種方式登陸的的用戶數(shù)據(jù)表設(shè)計(jì)6. 獲取上次登錄ip的原理是啥?7. phpstudy v8打開(kāi)數(shù)據(jù)庫(kù)就出錯(cuò),而phpstudy 2018不會(huì)8. 為什么說(shuō)非對(duì)象調(diào)用成員函數(shù)fetch()9. 點(diǎn)擊頁(yè)面就自動(dòng)輸入到mysql.求解10. 請(qǐng)問(wèn)下tp6框架的緩存在哪里設(shè)置,或者說(shuō)關(guān)閉?
