2016-08-14 46 views
0

我的角度應用程序有一個控制器,既可以在模態模式下使用,也可以在非模態模式下使用。我想檢查它是哪種模式。有人能幫我嗎 ?Angularjs - 檢查控制器模式模式

令控制器

$scope.chooseClient = function() { 
     $uibModal.open({ 
      templateUrl: 'partials/client/edit.html', 
      controller: 'ClientEditController', 
     }).result.then(function (client) { 
      // Modal OK 
      if (client) { 
       $scope.model.client = client; 
      }  
     }, function (status) { 
      // Modal cancelado 
     }); 
    }; 

客戶端控制器

.controller('ClientEditController', 
    function ($scope, $location) { 

     $scope.cancel = function() { 
      if (//I would check if modal mode) { 
       $scope.$dismiss('cancel'); 
      } else { 
       $location.path("/client/list"); 
      }  
     }; 



}); 
+0

我不知道是否有一個更簡單的方法,但根據[本文檔(https://github.com/angular-ui/bootstrap/tree/master/src/modal/docs),你至少應該能夠檢查'openedClass'是否應用到你的元素。 –

回答

0

您可以通過一個resolve對象與標誌。這將迫使您在控制器的路線中通過相同的解決方案,並注入解決方案給控制器。

$scope.chooseClient = function() { 
    $uibModal.open({ 
     templateUrl: 'partials/client/edit.html', 
     controller: 'ClientEditController', 
     resolve: { 
      isModal: true 
     } 
    }).result.then(function (client) { 
     // Modal OK 
     if (client) { 
      $scope.model.client = client; 
     }  
    }, function (status) { 
     // Modal cancelado 
    }); 
}; 

而不是檢查:

.controller('ClientEditController', function ($scope, $location, isModal) { 
    $scope.cancel = function() { 
     if (isModal) { 
      $scope.$dismiss('cancel'); 
     } else { 
      $location.path("/client/list"); 
     }  
    }; 
}); 

查看文檔:$uibModal

+0

非常感謝,Ron Dadon。有效! – araraujo