Angularjs $ scope未更新

时间:2013-04-07 05:38:20

标签: angularjs

在我的应用程序中,我从一个控制器更新$ 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?

1 个答案:

答案 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)您必须创建角度服务并维护服务中的值并跨控制器共享值