angularjs位置范围

时间:2012-12-06 09:47:56

标签: angularjs

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
}