代码之家  ›  专栏  ›  技术社区  ›  Kobby

角度Js ng咔嚓声未发射`

  •  1
  • Kobby  · 技术社区  · 10 年前

    我有一个最奇怪的问题,就是在我的棱角分明的应用程序中被点击。

    以下是我正在处理的问题:

    <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 click事件根本没有启动。我缺什么了吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Pankaj Parkar    10 年前

    不要污染 $rootScope 它的坏模式,请使用 service/factory 而您希望在各个组件之间共享数据。

    ng-if 在该元素值数据类型上创建原型继承的子作用域将不会在其中填充值 div ,您需要添加 $parent. 要访问作用域变量,请在As之前使用作用域变量 ng如果 这导致了一个问题,您需要在声明模型时遵循点规则,假设这是 $scope.model={} 在scope中,然后分配所有属性并在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;