繁体   English   中英

使用AngularJS服务将数据从一个html传输到另一个html(控制器之间的数据共享)

[英]Transfer data from one html to another using AngularJS services (data share between controllers)

我查了几个有类似问题的帖子,但找不到适合我的案例的解决方案。

我有一个搜索页面,该页面向后端发送请求,并在页面中填充搜索结果(每个结果都是一个对象)。 我显示了每个对象的简要视图,并且在鼠标单击特定对象时,应该将用户重定向到显示该对象更详细视图的页面。

在JS端,我有一个控制器处理$http.post调用,并从后端检索对象以显示在第一页上。 我在第二页上使用其他控制器来尝试从第一个控制器中获取相关对象(通过angular的.service ),但是由于某种原因,我在第二页上获得了一个空对象。 该服务适用于吸气剂和吸气剂。 该服务可以通过第一个控制器将对象设置得很好,并且我可以打印它。 但是,当重定向到第二页时,使用第二个控制器的getter时,由于某种原因,该对象将被删除并显示为空。

这是相关的代码。 服务:

 app.service('shareService', function(){ var savedData = {} function set(data) { savedData = data console.log(savedData); } function get() { console.log(savedData); return savedData; } return { set: set, get: get } }); 

搜索(设置)控制器:

 app.controller('SearchCtrl', function(shareService, $scope, $http) { $scope.sendSearch = function() { $http.post("http://localhost:9080/MedNetApp/rest/mednet/searchCollections", json).success(function (response) { $scope.collections = response.searchResults; shareService.set($scope.collections); }); }; }); 

第二个(getter)控制器:

 app.controller('CollectionsCtrl', function(shareService, $scope){ $scope.collections = shareService.get(); }) 

不知道这是否相关,但是这也是html部分,我在其中设置了一个临时测试按钮以重定向到第二页:

 <button id=mixing type = "button" class="btn btn-primary-aligned" data-ng-click = "go('second-page.html')">temp</button> 

因此,最后,通过get()函数第二次打印savedData时, savedData显示为空对象。 知道为什么这行不通吗? 还是将数据发送到新页面的更好方法?

编辑 -我应该提一下,我基本上依赖于此解决方案: AngularJS-在页面之间传递数据

因此,在进一步研究之后,我遇到了以下解决方案:

AngularJS中页面之间的共享数据返回空

如上面的链接所述,我在服务中使用了sessionStorage,它解决了该问题。

使用localStorage或sessionStorage

 var myJson ={};
 localStorage.set("your_Data",myJson);
 // to get the value from another page
 var returnJson  = localStorage.get("Your_Data");  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM