2017-05-30 132 views
0

在我的角度应用程序中,有两个页面(列表&结帐)。在列表页面中,用户可以搜索项目并且将显示搜索到的项目,然后用户可以选择项目并继续结帐。
             在结帐页面,用户可以返回到列表页面,并且在那个时候列表页面中的所有项目应该与之前的项目相同。 为了实现此功能,我的代码是AngularJS - HTML绑定无法正常工作

从列表页移动到结账页面,所有的范围数据存储在服务

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

存储完整范围不是好主意。你可以储存你需要的变量。此外,你可以使用localStorage来做到这一点。 据我所知,新的电话不是一个选项,所以你可以尝试使用$超时。

$timeout(function() { 
    $scope.listSearch = myValue; 
}); 
+0

我觉得有些混乱。在范围内有很多事情要回来时必须维持。回来之后,用户仍然可以搜索另一个项目。那么肯定需要一个新的调用,新的项目细节将被分配给$ scope.listSearch。但绑定没有发生。 –

+0

你试过$超时了吗? –

+0

是的..不起作用 –

0

而不是这样做,你可以为约翰所提供的localStorage或sessionStorage。 您可以点击下面的链接,例如

https://www.codeproject.com/Articles/1015515/Working-With-Client-Side-Local-Storage 
+0

这有什么区别吗?存储在服务中或本地存储中... –