AngularJS - 如何再次停止重新渲染模板?

时间:2014-02-14 08:13:47

标签: javascript angularjs

AngularJS是否可以避免再次渲染视图?

我有一个页面,它从数据库查询数据并将其显示在视图中,但是当我导航到另一个页面,然后再次导航回来。它再次呈现视图。

AngularJS是否可以保留渲染视图?我不想再次查询数据并重新渲染视图。我想立即显示渲染的视图而不再查询数据。

1 个答案:

答案 0 :(得分:2)

如果在服务中保存或缓存数据,则可以避免每次查询服务器。承诺是一个很好的方式来做到这一点。请考虑以下示例,该示例使用$http返回的承诺(但您可以使用$q轻松创建自己的承诺):

app.controller('SomeController', function($scope, dataService) {
  dataService().success(function(data) {
    $scope.myData = data;
  });
});

app.factory('dataService', function($http) {
  var promise = null;

  return function() {
    if (promise) {
      return promise;
    } else {
      promise = $http.get("...");
      return promise;
    }
  };
});

由于promise是在您第一次拨打dataService()时设置的,如果现有promise已经存在,则会返回现有dataService(),只有第一次调用{{1}}才能实际生成{{1}}一个HTTP调用;其余的将使用现有的价值。