Angularjs 将rootScope值从一个控制器传递到另一个控制器

Angularjs 将rootScope值从一个控制器传递到另一个控制器,angularjs,Angularjs,我试图使用$rootscope将值从控制器传递到另一个控制器,我所做的是首先初始化rootscope,如下所示 app.run(function ($rootScope) { $rootScope.emp=0 ; }); 然后我在我的一个控制器中更改rootScope的值,如下所示 app.controller("datatableController", function ($scope, DTOptionsBuilder, $http, $rootScope) { $scope.

我试图使用$rootscope将值从控制器传递到另一个控制器,我所做的是首先初始化rootscope,如下所示

app.run(function ($rootScope) {
    $rootScope.emp=0 ;
});
然后我在我的一个控制器中更改rootScope的值,如下所示

app.controller("datatableController", function ($scope, DTOptionsBuilder, $http, $rootScope) {
 $scope.update = function (data) {
        alert(data);
        $scope.message = $http.post('http://localhost:5000/api/employee/view', data).
            then(function (response) {
                $scope.userEdit = response.data;
                $rootScope.emp=$scope.userEdit[0].id;
                alert($rootScope.emp);
            });
        window.location.href = "updateEmployee.html";

    };
});
然后,我尝试在第二个控制器中访问此更改的$rootScope.emp值,但得到初始化时设置的值,即0

app.controller("UpdateController", function ($scope, $http, $rootScope) {

    $scope.userid=$rootScope.emp;
    alert($scope.userid);
});
试试这个:

app.controller("datatableController", function ($scope, DTOptionsBuilder, $http, $rootScope) {
 $scope.update = function (data) {
    alert(data);
    $scope.message = $http.post('http://localhost:5000/api/employee/view', data).
        then(function (response) {
            $scope.userEdit = response.data;
            $rootScope.$apply(function(){
                $rootScope.emp=$scope.userEdit[0].id;
            });
            alert($rootScope.emp);
        });
    window.location.href = "updateEmployee.html";

};
});

您确定它在DataTableControllera内部得到更新吗您确定控制器代码的执行顺序吗?datatableController是否在UpdateControl之前执行。如果您想在控制器之间共享数据,我认为使用服务是更好的方法。我认为服务不会返回成功,这就是为什么它永远不会进入then功能,因此,
$rootScope.emp
的值不会得到更新。尝试在这些点添加调试器。您可能在href中的某个位置使用了
#
,因此页面会重新加载,并且根范围值会丢失。我可以看看你的代码吗?你是如何从一个页面重定向到另一个页面的?检查这个链接。问题是你的路线改变了。您需要使用角度方式更改路线。