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票以上并不意味着正确,这里面有很多问题,所以被接受的答案并不是最佳答案。