0

在我的应用程序中,我正在从一个控制器更新 $scope.needs。然后当我单击一个按钮时,它将转到另一个控制器。我得到了 $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 更新了..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?

4

1 回答 1

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)您必须创建一个角度服务并维护服务内部的价值并在控制器之间共享价值

于 2013-04-07T07:56:28.697 回答