angular.js - AngularJS 遮罩层显示问题
我想大声告诉你
我想大声告诉你 2017-05-15 17:06:36
0
2
760

遇到一个问题,不知道怎么解决,希望有知道的人能够帮我看看是哪边出了问题。

我是想要在页面上点击一个p,动态的显示一个遮罩层。
我现在在控制显示的这个p里面添加了一个ng-click='showFav()', 在这个遮罩层最外面的一个p上面添加了一个ng-show='showMenu', 我是想通过$scope.showMenu值来控制遮罩层的显示的。

现在问题就是,我页面上的这个$scope.showMenu值在showFav()里面设置成true之后,并没有让遮罩层显示出来。

调试的时候发现,运行完这个showFav之后,showMenu这个值就变成了false。这点不解啊。。。

是不是修改showMenu值之后要$scope.$apply()??? 但是会报错:[$rootScope:inprog],我很方啊。。。

    storeApp.controller('productCtrl', ['$scope', '$http', 'Cart', function($scope, $http, Cart){
        $scope.showMenu = false;

        $scope.addItem1 = function(productSku, num, storeKey) {
            Cart.addtoCart(productSku, num, storeKey);
        };
        $scope.showFav = function(item) {
            $scope.chooseItem = item;
            $scope.showMenu = true;
        };
    }]);
    
    storeApp.directive('choosefav', [function() {
    return {
        restrict: 'AE',
        replace: true,
        templateUrl: 'template/mask.html'
    };

页面

    <p ng-controller="productCtrl" ng-show="showMenu">
        <choosefav></choosefav>
    </p>
我想大声告诉你
我想大声告诉你

membalas semua(2)
淡淡烟草味

1. Jangan letakkan nilai jenis asas secara langsung pada skop Anda boleh menentukan objek vm untuk menyimpan nilai ini, yang boleh mengelakkan beberapa masalah pelik, seperti:

storeApp.controller('ctrlName',function($scope){
    $scope.vm={
        showMenu:false
    };
    
    $scope.showFav = function(item) {
        $scope.chooseItem = item;
        $scope.vm.showMenu = true;
    };
});

2. Saya tidak tahu bagaimana struktur halaman anda dan hubungan antara p yang mengikat acara klik dan lapisan topeng. Anda lebih baik menyiarkan html untuk melihat

大家讲道理

Jika arahan anda tidak mentakrifkan skop untuk arahan itu, ini bermakna arahan itu berkongsi skop yang sama dengan induk, jadi anda boleh terus menggunakan

dalam templat arahan anda.
ng-show="showMenu"

untuk mengawal sama ada untuk dipaparkan atau tidak.

Sudah tentu, anda boleh menjadikan lapisan topeng global dan menggunakannya di mana-mana sahaja.
Tentukan skop bebas, seperti:

scope:{
    show : '='
}

Arahan itu berbunyi:

<choosefav  show="showMenu"></choosefav>

Hanya tentukan nilai showMenu dalam pengawal.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan