4

我对 AngularJS 范围和位置有一些问题。这是一个例子:

function CreateAccountCtrl($scope, $http, $location) {
    ...
    $http.post(url,$scope.form).
        success(function(data){
            $location.path('/'); // I need to transfert data to the location 
        }
}

我的问题是:我想将数据传输到 / 控制器,我想使用 rootScope 但我认为这不是最好的方法。

任何想法 ?

4

2 回答 2

6

您可以使用$rootScope在控制器之间发送数据。$routeParams不允许发送复杂的数据结构。让我们来看看它。

将成功回调的返回数据分配给$rootScope中的变量。导航到 AccountController。

function CreateAccountCtrl($scope, $http, $location,$rootScope ) {
    ...
    $http.post(url,$scope.form).
        success(function(data){
            $rootScope.accountInfo = data; 
            $location.path('/account');
        }
}

$routeProvider中配置路由:

$routeProvider.when('/account', {
    template: 'account.html',
    controller: AccountCntl  
});

在 AccountController 中可以访问$rootScope上的数据。

function AccountCtrl($scope, $rootScope) {
    $scope.accountInfo = $rootScope.accountInfo;
}
于 2013-05-17T10:43:45.960 回答
1

使用 $routeParams 服务。

function CreateAccountCtrl($scope, $http, $location) {
    ...
    $http.post(url,$scope.form).
        success(function(data){
            $location.path('/account/' + data.accountId);
        }
}

在 $routeProvider 中配置路由:

$routeProvider.when('/account/:accountId', {
    template: 'account.html',
    controller: AccountCntl  
});

您的 AccountController 现在可以访问数据:

function AccountCtrl($scope, $routeParams) {
    $scope.accountId = $routeParams.accountId;
}
于 2012-12-20T10:18:36.213 回答