我已查找了几个类似问题的帖子,但无法为我的案例找到解决方案。
我有一个向后端发送请求的搜索页面,用搜索结果填充页面(每个结果都是一个对象)。我显示每个对象的简洁视图,并且在鼠标单击特定对象时,应该将用户重定向到显示该对象的更详细视图的页面。
在我的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;
因此,最后,savedData
在第二次通过get()
函数打印时显示为空对象。知道为什么这不起作用吗?或者更好的方式将数据发送到新页面?
编辑 - 我应该提一下,我基本上都依赖这个解决方案: AngularJS - Passing data between pages
答案 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");