在我的应用程序中,我从一个控制器更新$ scope.needs.Then当我点击一个按钮时,它将转到另一个控制器。在那里,我得到$ scope.needs的更新值。但是当点击后退按钮时,它将转到前一个控制器。我没有得到$ scope.needs的更新值。如何解决这个问题。
这是第一个控制器。
function CommitmentCtrl($scope, $routeParams, $http, UIData, cust, productList) {
$scope.needs = $scope.customer.priorities.list;
}
在此控制器中
$scope.increment = function(index) {
$scope.needs[index].commitment = parseFloat ($('#custom_commitment_'+index).val()) + 1000;
}
这里$ scope.needs updated..rite?然后单击按钮时,将调用以下函数
$scope.gotoSummary = function(){
$scope.customer.priorities.list = $scope.needs;
}
这里$ scope.customer.priorities.list包含更新的值。
这是下一个控制器
function SummaryCtrl($scope, $routeParams, $http, UIData, cust) {
$scope.$parent.needs = $scope.customer.priorities.list;
}
然后单击后退按钮调用第一个控制器,但在$ scope中,更新值不存在。
如何在两个地方更新$ scope.needs?
答案 0 :(得分:1)
有两种方法可以实现这一目标 1)使用$ rootScope 2)使用Angular服务
1)使用$ rootScope
<html ng-app="jsf">
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
</head>
<body>
<div ng-controller="CategoriesCtrl">
<input type="button" value="update" ng-click="update()" />
</div>
<div ng-controller="secondCtrl">
<input type="button" value="check" ng-click="check()" />
</div>
<script>
var app = angular.module('jsf', []);
app.controller('CategoriesCtrl', function ($scope, $rootScope) {
$rootScope.block = [3, 2, 1, 0];
$scope.update = function () {
alert("123");
$rootScope.block[1] = '5';
}
});
app.controller('secondCtrl', function ($scope, $rootScope) {
$scope.check = function () {
alert($rootScope.block[1]);
}
});
</script>
</body>
</html>
2)您必须创建角度服务并维护服务中的值并跨控制器共享值