我对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,但我不认为这是最好的方法。
有什么想法吗?
答案 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;
}