在我的角度应用程序中,有两个页面(列表和结帐)。在列表页面中,用户可以搜索项目并且将显示搜索到的项目,然后用户可以选择该项目并继续结账。
从结帐页面,用户可以返回列表页面,此时列表页面中的所有项目应与之前的项目相同。
为了实现此功能,我的代码是
从列表页面移动到结帐页面时,所有范围数据都存储在服务中
returnsService.setScopeData($scope);
从结账页面返回到列表页面时,这些保存的数据将从服务中检索并分配给范围变量。
var restoreScopeData = returnsService.getScopeData();
if (restoreScopeData) {
for (var key in restoreScopeData) {
if (key.charAt(0) != '$') {
$scope[key] = restoreScopeData[key];
}
}
}
这可以在一定程度上正常工作,我可以看到列表页面与我离开它的方式相同。 但问题是,现在我无法在列表页面中搜索新项目。
当搜索发生时,项目将填充到$scope.listSearch
,并以html {{listSearch}}
显示。
在错误的情况下,
我可以看到新的搜索数据被分配到$scope.listSearch
,但HTML绑定没有发生。
我尝试在搜索分配后调用$scope.$apply()
,但仍无效。
答案 0 :(得分:0)
存储完整范围并不是一个好主意。您可以存储所需的变量。此外,您可以使用localStorage。 据我所知,打新电话不是一种选择,所以你可以尝试使用$ timeout。
$timeout(function() {
$scope.listSearch = myValue;
});
答案 1 :(得分:0)
而不是这样做,你可以将本地存储或sessionStorage视为约翰所建议的。 您可以查看以下链接,例如
https://www.codeproject.com/Articles/1015515/Working-With-Client-Side-Local-Storage