在重定向中传递对象

时间:2016-11-16 13:58:31

标签: angularjs

我正在尝试使用$location通过提供$scope的对象来重定向到我的应用的某个页面。

以下是我正在努力实现的简化版本:

HTML

<div>
    Name: {{bruce.name}} 
    E-mail: <a ng-click="contact(bruce)">{{bruce.mail}}</a>
</div>

在我的Angular控制器中

$scope.bruce = {name: 'Bruce Wayne', mail: 'brucewayne@batman.com'}

/* Should redirect to mail page with dest object */
$scope.contact = function(dest) {
    $location.path("/mail");
    // Provide dest object
}

在第二页(有不同的控制器)中,我希望能够显示已发送的对象:

<div>
     <p>From: mymail@me.com <br/>       
     To: {{dest.mail}}</p>

     <p>Type your email...</p>
</div>

我想这个解决方案非常简单,所以我不需要一个完整的代码,但我会很感激如何实现这个目标。

PS:不使用$location的解决方案也适合我。

1 个答案:

答案 0 :(得分:2)

这是您在应用程序内共享数据的典型方案。 一个潜在的解决方案应该是:

var app = angular.module('myApp', []);
app.service('myService', function(){
  var data;
  this.setData = function(d){
    data = d;
  }
  this.getData = function(){
    return data;
  }
});

app.controller('myCtrl1', function($scope, myService){
 ..
 myService.setData(objectSent);

});

app.controller('myCtrl2', function($scope, myService){
 $scope.objectSent= myService.getData();
 //do something
});

服务是单例,一次实例化然后以角度缓存,每当您需要特定数据时,您可以注入服务并调用所提供的方法。