0

私のアプリケーションでは、1 つのコントローラーから $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 を更新するにはどうすればよいですか?

4

1 に答える 1

1

これを実現するには 2 つの方法があります。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 に答える