AngularJS ui-router保存以前的状态

时间:2016-09-05 16:55:58

标签: javascript angularjs angular-ui-router

我想保存当前状态,我不是指保存url和params,我想用范围保存整个视图..事实上,我想实现像搜索系统一样的facebook,但不同。我想在整个页面上显示结果,所以我将替换当前的主状态,当搜索栏被清除时,我们将恢复以前的状态。我不想重建状态立即恢复状态(没有服务器请求)+以避免复杂的操作(例如无限滚动数据..)。我发现了ui'router extras(粘性状态)插件,但是我们需要定义状态定义要保存的状态。 我为我糟糕的英语道歉..

2 个答案:

答案 0 :(得分:0)

您可以使用angular local storage将日期保存在本地存储中。它将为您节省数据服务器之旅。

答案 1 :(得分:0)

这是一个架构决策。这个问题的答案不会很短,而且可能非常主观,不同的人会有不同的方法来实现它。

我建议您利用本地存储并对本地存储中存在的数据执行所有操作。

您这样做的方法是首先要了解所有服务器请求都需要通过A服务来完成,该服务返回localstorage中存在的网络是否处于脱机状态。

因此所有AJAX调用都将从控制器完成,如此



var getMeRequest = AuthService.getMe();
getMeRequest.promise.then(function(response){ 
  if(response.cached) {
    // $update views if need be  
  } else {
    //Some code
  }
});




在AuthService文件中,您可以这样做:



// In AuthService

this.getMe() =  function () {
  if(network.online) {
    //Make AJAX call
    // Update localstorage with whatever response
    return {response: locastorageData, cached:false};
  } else {
    return {response: localstorageData, cached:true};
  }
  
};




这不仅可以让您像在线一样进行所有ajax调用,还可以让控制器根据响应是否被缓存来更新视图。