我正在尝试使用$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
的解决方案也适合我。
答案 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
});
服务是单例,一次实例化然后以角度缓存,每当您需要特定数据时,您可以注入服务并调用所提供的方法。