Angularjs 将rootScope值从一个控制器传递到另一个控制器
我试图使用$rootscope将值从控制器传递到另一个控制器,我所做的是首先初始化rootscope,如下所示Angularjs 将rootScope值从一个控制器传递到另一个控制器,angularjs,Angularjs,我试图使用$rootscope将值从控制器传递到另一个控制器,我所做的是首先初始化rootscope,如下所示 app.run(function ($rootScope) { $rootScope.emp=0 ; }); 然后我在我的一个控制器中更改rootScope的值,如下所示 app.controller("datatableController", function ($scope, DTOptionsBuilder, $http, $rootScope) { $scope.
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中的某个位置使用了#
,因此页面会重新加载,并且根范围值会丢失。我可以看看你的代码吗?你是如何从一个页面重定向到另一个页面的?检查这个链接。问题是你的路线改变了。您需要使用角度方式更改路线。