2013-04-07 74 views
0

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

+0

可以请您分享fid dle – 2013-04-07 07:12:38

回答

1

有到acheive两种方式这 1)使用$ rootScope 2)采用了棱角分明服务

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

+0

服务应该是建议#1。不应该使用'$ rootScope'来存储数据 – charlietfl 2013-04-07 10:48:03

相关问题