如何以角度方式从一个控制器访问$ scope

时间:2016-01-07 14:41:37

标签: javascript angularjs

我有来自不同js文件的这些控制器代码。

NLGoalsCtrl.js

angular.module('mysite').controller('NLGoalsCtrl', function ($scope) {
    $scope.goals_selected = [];
});

NLSessionsCtrl.js

angular.module('mysite').controller('NLSessionsCtrl', function ($scope) {
    //access $scope.goals_selected here
});

我需要能够从NLSessionsCtrl访问$ scope.goals_selected。我该怎么做呢?谢谢你们。

3 个答案:

答案 0 :(得分:3)

使用工厂/服务存储goals,负责在控制器之间共享数据。

myApp.factory('myService', [function() {
        var goals = {};
        return {
            getGoals: function() {
                return goals
            },

            setGoals: function(op) {
                goals = op;
            },
        }
    }])
    .controller('NLGoalsCtrl', [function($scope, myService) {
        $scope.goals_selected  = {};
        //Update goals_selected
        myService.setGoals($scope.goals_selected );
    }])
    .controller('NLSessionsCtrl', [function($scope, myService) {
        //Fetch
        $scope.goals_selected  = myService.getGoals();
    }]);

答案 1 :(得分:1)

$ scope是一个"对象" "绑定"到应用控制器的DOM元素。所以$ scope的上下文仍然在控制器内。

如果要访问2个控制器中的变量,请尝试通过service / Factory或$ rootScope

进行共享

这是sample App

答案 2 :(得分:0)

您要在任何控制器中访问的控制器将其分配给$ rootScope。 并在任何你想要的控制器中访问它。