Javascript 如何在AngularJs中通过状态传递数据?

Javascript 如何在AngularJs中通过状态传递数据?,javascript,angularjs,Javascript,Angularjs,我正在构建一个多步骤的注册表单,因为我正在传递数据 使用输入框从第一个状态到第二个状态,但数据不是 从第一个状态获取 var publisherdata={ 电子邮件:$scope.publishersignup.email, 名称:$scope.publishersignup.name, 密码:$scope.publishersignup.password }; $state.go('profile',publisherdata); 在html视图中,我使用此publisherdata变量获

我正在构建一个多步骤的注册表单,因为我正在传递数据 使用输入框从第一个状态到第二个状态,但数据不是 从第一个状态获取

var publisherdata={
电子邮件:$scope.publishersignup.email,
名称:$scope.publishersignup.name,
密码:$scope.publishersignup.password
};
$state.go('profile',publisherdata);
在html视图中,我使用此publisherdata变量获取详细信息,如:

<input type="text" ng-model="email" ng-bind="publisherdata.email" name="email" disabled />

但价值什么都不是。请帮助,如何传递数据?

似乎
ng model=“email”
指向$scope.email。如果要获取此数据,可以使用该变量,也可以使用
publisherdata.email
。我不认为你需要ng绑定,ng模型应该足够了

此代码
$state.go('profile',publisherdata)将视图从一个更改为另一个。控制器中的变量将不被使用。我建议您制作一个或,用于将信息从一个控制器发送到另一个控制器

似乎
ng model=“email”
指向$scope.email。如果要获取此数据,可以使用该变量,也可以使用
publisherdata.email
。我不认为你需要ng绑定,ng模型应该足够了


此代码
$state.go('profile',publisherdata)将视图从一个更改为另一个。控制器中的变量将不被使用。我建议您制作一个或,用于将信息从一个控制器发送到另一个控制器

要使绑定工作,您需要将数据定义为状态参数,在目标控制器中插入
$stateParams
,并将参数添加到
$scope

比如说,

状态配置:

$stateProvider.state('profile', {
   url: '/profile',
   params: {
     publisherdata: null
   }
   templateUrl: '',
   controller: 'destinationCtrl'
});
传递数据:

$state.go('profile', {
 publisherdata: {
  email: $scope.publishersignup.email,
  name: $scope.publishersignup.name,
  password: $scope.publishersignup.password
 }
});
目标控制器:

.controller('destinationCtrl', function($scope,$stateParams){
  $scope.publisherdata = $stateParams.publisherdata;
});

要使绑定工作,您需要将数据定义为状态参数,在目标控制器中插入
$stateParams
,并将参数添加到
$scope

比如说,

状态配置:

$stateProvider.state('profile', {
   url: '/profile',
   params: {
     publisherdata: null
   }
   templateUrl: '',
   controller: 'destinationCtrl'
});
传递数据:

$state.go('profile', {
 publisherdata: {
  email: $scope.publishersignup.email,
  name: $scope.publishersignup.name,
  password: $scope.publishersignup.password
 }
});
目标控制器:

.controller('destinationCtrl', function($scope,$stateParams){
  $scope.publisherdata = $stateParams.publisherdata;
});


你有更多的代码要显示吗?也许是一个plunkr?你有更多的代码要显示吗?也许是一个很好的例子。这是否会将参数发送到新状态?这是否代替了使用服务?@StianStandahl它将数据发送到新状态
$stateParams
是一个内置的ui路由器服务,我们可以使用访问参数发送到当前stateParams。我不会那样做,但是很有趣。谢谢TJ,这是一个很好的例子。这是否会将参数发送到新状态?这是否代替了使用服务?@StianStandahl它将数据发送到新状态
$stateParams
是一个内置的ui路由器服务,我们可以使用访问参数发送到当前stateParams。我不会那样做的,不过还是很有趣。谢谢TJ,这真是太棒了,使用服务才是最好的选择。状态参数不是用来“传递数据”的。@RonDadon@TJ我看不出不一致的部分在哪里。通过状态参数传递数据对象是可能的,这是可行的,但不是好的做法。这将导致状态彼此紧密耦合,而不是依赖于可以注入它们的单个依赖点。@StianStandahl使用状态参数传递视图相关信息很有用。若要在状态/控制器之间共享数据,请将数据处理委托给负责该操作的服务data@TJ这只是练习的问题。我相信,将数据分离到不同的服务将在未来有所帮助,这将使其成为一种良好的做法。假设您需要传递另一个对象,而不是更改所有状态,您只需要更改服务。顺便说一下,71票以上并不正确,问题很多,所以被接受的答案并不是最好的答案,使用服务才是上策。状态参数不是用来“传递数据”的。@RonDadon@TJ我看不出不一致的部分在哪里。通过状态参数传递数据对象是可能的,这是可行的,但不是好的做法。这将导致状态彼此紧密耦合,而不是依赖于可以注入它们的单个依赖点。@StianStandahl使用状态参数传递视图相关信息很有用。若要在状态/控制器之间共享数据,请将数据处理委托给负责该操作的服务data@TJ这只是练习的问题。我相信,将数据分离到不同的服务将在未来有所帮助,这将使其成为一种良好的做法。假设您需要传递另一个对象,而不是更改所有状态,您只需要更改服务。顺便说一句,71票以上并不意味着正确,这里面有很多问题,所以被接受的答案并不是最佳答案。