Angularjs子控制器获取父控制器范围变量不起作用?

时间:2013-10-02 07:24:39

标签: angularjs

我是Angularjs的新手,这是我的代码,

angular.module('remoteApp')
  .controller('ScreensavertabCtrl', function ($scope, $modal, $log, $state,Screensaverchpwservice,  
    Screensaverchpwgetservice) { 
      $scope.screensaverData = {
         screensaver:{
           pwProtect: '1'
         }
       };

  $scope.pwProtectOpen = function () {
    if($scope.screensaverData.screensaver.pwProtect == true){
      var modalInstance = $modal.open({
        templateUrl: 'pwProtectModalContent.html',
        controller: pwProtectModalInstanceCtrl
    });
  }     
};

var pwProtectModalInstanceCtrl = function ($scope, $modalInstance) {
  $scope.pwProtectCancel = function () {
    $modalInstance.dismiss('cancel');
    console.log($scope.screensaverData.screensaver.pwProtect)
  };

};});

当我启用pwProtectCancel函数时,我想获得$scope.screensaverData.screensaver.pwProtect

值,我试图使用'$ scope。$ parent.screensaverData.screensaver.pwProtect'不起作用?

我对此很困惑,

任何想法?

1 个答案:

答案 0 :(得分:5)

将$ modal服务调用更改为

var modalInstance = $modal.open({
        templateUrl: 'pwProtectModalContent.html',
        controller: pwProtectModalInstanceCtrl
        scope:$scope
}

你应该得到的数据不是模态范围。

文档提到了范围选项

  

范围 - 用于模态内容的范围实例(实际上   $ modal服务将创建一个提供的子范围   范围)。默认为$ rootScope

它获得的默认值是rootscope。