我的angularJS应用程序中的每个站点都有一个控制器。 在这种情况下,我有一个网站,其中包含用于创建用户的表单,如果提交了表单,则用户将导航到成功页面,该页面汇总用户创建并提供有关已创建用户的信息。
底部有两个控制器。我的方法是在服务器响应后,我在$ rootScope中设置用户名,密码和角色。然后我导航到“usercreateresponse”页面,之后我使用{{username}},{{password}}和{{roles}}查看此属性。
这个工作到目前为止但我对这种方法有一个问题:如果我重新加载页面“usercreateresponse”,那么用户名,密码和角色的值都不会显示,实际上我不知道为什么,因为我已经设置了值rootscope(所以我相信rootScope可能会通过刷新来清理?!)
我现在的问题是,如果我的方法还可以,或者是否有更好的解决方案(例如,通过参数传输值?,只有一个控制器用于用户处理?)。 非常感谢!
function CreateUserController($scope, $http, $location, $rootScope, $cookieStore) {
$scope.createUser = function(data) {
var dataObj = {
username : $scope.username,
password : $scope.password,
roles: [$scope.role]
};
var res = $http.post('/users/createUser', dataObj);
res.success(function(data, status, headers, config) {
$rootScope.username = data.username;
$rootScope.password = data.password;
$rootScope.role = data.roles;
$rootScope.id = data.id;
$location.path("usercreateresponse");
});
res.error(function(data, status, headers, config) {
alert( "failure message: " + JSON.stringify({data: data}));
});
}
}
成功创建用户的控制器:
function CreateUserResponseController($scope) {
}
答案 0 :(得分:0)
为什么不使用$ emit或$ broadcast来传输包含用户名,密码等的数据对象
$scope.$emit('userCreated', data);
在CreateUserController成功并通过
收听$scope.$on('userCreated', function(newVal, oldVal) {
$scope.userName = newVal.userName;
....
});
在usercreateresponse(CreateUserResponseController)
中