使用angularjs路由如何将范围值输入另一个控制器?

时间:2016-05-09 10:36:18

标签: angularjs angularjs-ng-route

我有一个单页应用程序的项目。所以我使用角度js路由。 在第一个控制器中,我有一个$ scope值。我必须在另一个控制器中使用相同的值

这是我的controller.js文件

var module = angular.module("sampleApp", ['ngRoute']);

    module.config(['$routeProvider',
        function($routeProvider) {
            $routeProvider.
                when('/route1', {
                    templateUrl: 'http://localhost/MyfirstApp/welcome',
                    controller: 'RouteController1'
                }).
                when('/route2', {
                    templateUrl: 'http://localhost/MyfirstApp/result',
                    controller: 'RouteController2'
                }).
                otherwise({
                    redirectTo: '/'
                });
        }]);

    module.controller("RouteController1", function($scope) 
    {
       $scope.value="Athira" 


    })
    module.controller("RouteController2", function($scope) {
     $scope.text=$scope.value + "Sandeep" 
    })

在结果页面中,它应显示为' Athira Sandeep'

感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

使用服务在控制器之间共享数据。 另一种选择可能是事件发射器,我个人不是粉丝,因为它填充了很多事件的rootScope(在这种情况下)。

你能做什么

angular.module('app',[])
.factory('SharedScope',function(){
var fac = this;
var scope = "";
var sharedScope = {
getScope : function(){
return fac.scope;
},
setScope: function(scope){
fac.scope = scope
}
};
return sharedScope;
})
.controller('Ctrl1',function('SharedScope'){
SharedScope.setScope("Angular");
})
.controller('Ctrl2',function('SharedScope'){
var data = SharedScope.getScope();
$scope.text = data + " is awesome"; //would get Angular is awesome
});

希望这有帮助。