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

时间:2016-03-07 22:53:04

标签: javascript html angularjs

我已查找了几个类似问题的帖子,但无法为我的案例找到解决方案。

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

在我的JS方面,我有一个处理$http.post调用的控制器,并从后端检索对象以显示在第一页上。我为第二页使用不同的控制器尝试从第一个控制器获取相关对象(通过角度.service),但由于某种原因,我在第二页上得到一个空对象。该服务适用于getter和setter。该服务能够通过第一个控制器设置对象,我能够打印它。但是,当使用第二个控制器的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
  }
});




搜索(setter)控制器:



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




第二个(吸气)控制器:



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>
&#13;
&#13;
&#13;

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

编辑 - 我应该提一下,我基本上都依赖这个解决方案: AngularJS - Passing data between pages

2 个答案:

答案 0 :(得分:0)

因此,经过进一步的研究,我发现了这个解决方案:

Sharing Data between pages in AngularJS returning empty

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

答案 1 :(得分:0)

使用localStorage或sessionStorage

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