AngularJS控制器$scope

AngularJS控制器$scope,angularjs,angularjs-scope,angularjs-controller,Angularjs,Angularjs Scope,Angularjs Controller,在angularJS应用程序中,每个站点都有一个控制器。 在本例中,我有一个站点,其中包含用于创建用户的表单,如果提交了表单,用户将被导航到一个成功页面,该页面总结用户创建并提供有关已创建用户的信息 底部有两个控制器。我的方法是在服务器响应之后,在$rootScope中设置用户名、密码和角色。然后导航到“usercreateresponse”页面,然后使用{{username}、{{password}和{{roles}查看此属性 到目前为止,这是可行的,但这种方法有一个问题:如果我重新加载页面“

在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) {
 }

为什么不使用$emit或$broadcast来传输包含用户名、密码等的数据对象

$scope.$emit('userCreated', data);
在CreateUserController success中,通过

$scope.$on('userCreated', function(newVal, oldVal) {

$scope.userName = newVal.userName;
 ....
});

在usercreateresponse(CreateUserResponseControl)

中,非常感谢您的回答。我认为$emit应该很少使用,因此我没有使用这种方法。谢谢