2016-11-16 101 views
0

我想通过提供我的$scope的对象来尝试使用$location重定向到我的应用程序的某个页面。在重定向中传递对象

这里是我想要实现的简化版本:

HTML

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

在我的角度控制器

$scope.bruce = {name: 'Bruce Wayne', mail: '[email protected]'} 

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

在第二页(具有不同的控制器),我想是能够显示sended对象:

<div> 
    <p>From: [email protected] <br/>  
    To: {{dest.mail}}</p> 

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

我猜的解决方案是非常简单的,所以我并不需要一个完整的工作代码,但我很感激一些关于如何实现这一目标的想法。

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

+0

您需要了解Angular Services--它们将帮助SPA设计中的页面之间持续保存数据。 – tymeJV

回答

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 
}); 

服务是单身,被实例化一次,然后通过角,每次缓存您需要具体的数据,你可以注入和呼叫提供的方法。