1

嘿,我有最奇怪的問題得到ng點擊在我的角應用程序中觸發。Angular Js ng-click not firing?`

這裏就是我處理:

<div class="popup" id="perks-popup" ng-if="perksPopup === true"> 

    <div class="popup-bkg" ng-click="perksPopup = false;"></div> 

    <div class="popup-content"> 
     <div class="popup-close" ng-click="perksPopup = false;"> 

      <img class="scalableImg" src="img/icons/close-blue.png" alt=""> 

     </div> 
    </div> 

</div> 

,這裏是主控制器:

(function(){ 

    "use strict"; 

    Caribou2015.controller('BaseController', ['$rootScope', '$scope', 'Dates', function($rootScope, $scope, Dates){ 
     console.log('base controller init'); 

     //overlay and popup states 
     $rootScope.welcomePopup = false; 
     $rootScope.perksPopup = true; 
     $rootScope.calPopup = false; 


    }]); 
})(); 

與此設置什麼,我希望發生的是,福利彈出的div將顯示當我點擊它的背景或彈出關閉div時,它會被ngIf移除。那麼它顯示得很好,但點擊關閉或背景什麼也不做。我甚至在變量上添加了一個$ rootScope。$ watch來查看它是否發生了變化,我什麼也沒有得到。看起來像ng點擊事件根本沒有觸發。有什麼我失蹤?

任何幫助將是真棒謝謝!

-Kobby

回答

1

不污染$rootScope其錯誤的思路,不要使用service/factory ,而你想分享的各種部件之間的數據。

ng-if並創造對元素值數據類型prototypically繼承子作用域不會得到有值在div填充,你需要添加$parent.訪問範圍變量,當您使用範圍變量ng-if之前導致一個問題,你需要遵循點規則,同時聲明模型,假設這將是$scope.model={}在作用域中,然後分配所有的屬性,並在html上使用它。

標記

<div class="popup" id="perks-popup" ng-if="model.perksPopup === true"> 

    <div class="popup-bkg" ng-click="model.perksPopup = false;"></div> 

    <div class="popup-content"> 
     <div class="popup-close" ng-click="model.perksPopup = false;"> 

      <img class="scalableImg" src="img/icons/close-blue.png" alt=""> 

     </div> 
    </div> 

</div> 

控制器

$scope.model = {}; 
$scope.model.perksPopup = true; 
+0

真棒。我討厭$ rootScope,因爲我不確定它是否是一種奇怪的範圍問題。感謝提醒但刪除。還要感謝ngIf提示 – Kobby