具有角度路由的多个控制器

时间:2014-10-09 07:46:03

标签: javascript html angularjs

这是我定义控制器文件的方式

<script type="text/javascript" src="scripts/services/route.js"></script>
<script type="text/javascript" src="scripts/controllers/mainController.js"></script>
<script type="text/javascript" src="scripts/controllers/configController.js"></script>
<script type="text/javascript" src="scripts/controllers/examController.js"></script> 

这就是我的route.js的样子

$routeProvider.when('/config', {
    templateUrl: 'views/config.html',
    controller: 'configController'
});

$routeProvider.when('/exam', {
    templateUrl: 'views/exam.html',
    controller: 'examController'
});

我正在做的是我定义了一个

$scope.a = true

中的

configController.js

我正在examController.js

中访问它

但现在$scope.a正在获得undefined

我如何将$ scope.a从configController扩展到examController?

2 个答案:

答案 0 :(得分:0)

您可以使用&#34;共享服务&#34;

将值从一个控制器共享到另一个控制器

<强> FirstController:

 function FirstCtrl($scope, mySharedService) {
      $scope.passData(params){
         mySharedService.setValues(params);
      }
 }

<强> SharedService:

    angular.module("yourAppName", []).factory("mySharedService", function($rootScope){

        var mySharedService = {};

        mySharedService.values = {};

        mySharedService.setValues = function(params){
            mySharedService.values = params;
            $rootScope.$broadcast('dataPassed');
        }

        return mySharedService; 
   });

<强> SecondController:

function SecondController($scope, mySharedService) {
    $scope.$on('dataPassed', function () {
        $scope.newItems = mySharedService.values;
    });
 }

答案 1 :(得分:-1)

你必须使用$ rootScope而不是$ scope。像这样使用:

$rootScope.a = true in configController.js

//Now get it in examController

$rootScope.a in examController.js

不要忘记将$ rootScope包含为依赖项。

相关问题