我的AngularJS应用程序中存在一种奇怪的行为。用于在" usercreate.html"创建用户的用例并且在成功创建(通过Backend REST-服务 - > HTTP POST)后,重定向到" usercreateresponse.html"是的。
我有两个控制器:
我在CreateUserController
和CreateUserResponseController
以及$rootScope.$broadcast
之间共享$rootScope.$on
和function CreateUserController($scope, CreateUserService) {
$scope.createUser = function(data) {
CreateUserService.createUser($scope.usernameCreate, $scope.passwordCreate, $scope.role);
}
}
services.factory('CreateUserService', function($rootScope, $location, $http) {
...
var res = $http.post('/users/createUser', dataObj);
res.success(function(data, status, headers, config) {
$rootScope.$broadcast('handleCreatedUser', {usernameCreate: data.username, passwordCreate: data.password, role: data.roles});
$location.path("usercreateresponse");
});
res.error(function(data, status, headers, config) {
...
});
}
return sharedCreateUserService;
});
function CreateUserResponseController($rootScope) {
$rootScope.$on('handleCreatedUser', function(event, args) {
$rootScope.usernameCreated = args.usernameCreate;
$rootScope.passwordCreated = args.passwordCreate;
$rootScope.role = args.role[0];
});
}
之间的数据。
我现在的问题是,当我在代码中更改某些内容(AngularJS代码)并刷新浏览器页面后,我将创建一个用户,用户创建工作正常,我也被重定向到usercreateresponse.html但是没有显示任何值 - >但这只是第一次 - >如果我导航回usercreate.html并再次创建一个用户,一切正常。
我发现如果它不能正常工作,则会使用HTTP GET从后端获取HTML代码。如果它工作,只有HTTP POST,一切正常。
有人知道如何阻止第一次创建用户 - >重定向问题?
这里是控制器/服务:
NSMutableDictionary *sendData = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:-10], @"value1",
[NSNumber numberWithInt:10], @"value2", nil];
NSError *error = nil;
NSData *dataJSon = [NSJSONSerialization dataWithJSONObject:sendData options:0 error:&error];
NSLog(@"sendData\n %@ \n\n", [sendData objectForKey:@"value1"]);
答案 0 :(得分:0)
您可以使用一种服务来代替广播,该服务将存储创建用户的响应。然后,您可以使用CreateUserResponseController的服务共享它。对于广播事件,可能发生的事情是,您在实例化处理它的控制器之前广播事件。因此,$ on可能尚未注册。因此,你面临的问题。