当前位置: 首页 > 知识库问答 >
问题:

延迟AngularJS路由更改直到加载模型以防止闪烁

施飞昂
2023-03-14

在此之前,旧页面仍然会继续显示(例如,如果我正在浏览另一个页面,然后决定看到这个项目索引)。

共有1个答案

訾高明
2023-03-14

$RouteProvider解析属性允许延迟路由更改,直到加载数据。

首先定义具有resolve属性的路由,如下所示。

angular.module('phonecat', ['phonecatFilters', 'phonecatServices', 'phonecatDirectives']).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.
      when('/phones', {
        templateUrl: 'partials/phone-list.html', 
        controller: PhoneListCtrl, 
        resolve: PhoneListCtrl.resolve}).
      when('/phones/:phoneId', {
        templateUrl: 'partials/phone-detail.html', 
        controller: PhoneDetailCtrl, 
        resolve: PhoneDetailCtrl.resolve}).
      otherwise({redirectTo: '/phones'});
}]);

请注意,resolve属性是在route上定义的。

function PhoneListCtrl($scope, phones) {
  $scope.phones = phones;
  $scope.orderProp = 'age';
}

PhoneListCtrl.resolve = {
  phones: function(Phone, $q) {
    // see: https://groups.google.com/forum/?fromgroups=#!topic/angular/DGf7yyD4Oc4
    var deferred = $q.defer();
    Phone.query(function(successData) {
            deferred.resolve(successData); 
    }, function(errorData) {
            deferred.reject(); // you could optionally pass error data here
    });
    return deferred.promise;
  },
  delay: function($q, $defer) {
    var delay = $q.defer();
    $defer(delay.resolve, 1000);
    return delay.promise;
  }
}
 类似资料:
  • 问题内容: 有没有办法推迟或延迟摘要的发生? 我想对模型进行一堆更改,但是在对模型进行所有更改之前,我不希望摘要触发。模型上的某些对象具有观察者,这些观察者可以更新模型上的其他对象以进行更改。 理想情况下,我想 停止$ digest 对模型进行所有更改 开始$ digest $ digest将发现所有脏物并解雇观察员。 另一个解决方案是,我可以停止$ digest,而不是停止 删除观察者 对模型进

  • 问题内容: 感谢Dan Wahlin的精彩文章,我设法实现了Angular的控制器和服务的延迟加载。但是,似乎没有一种干净的方法来懒惰加载独立的模块。 为了更好地解释我的问题,假设我有一个没有RequireJS的应用,其结构如下: 这是在Plunker中带有RequireJS的示例应用程序:http ://plnkr.co/aiarzVpMJchYPjFRrkwn 问题的核心是Angular不允许

  • 不确定我是否做对了一切。但问题是:当我从延迟加载的模块导航到组件的某些子路由时,它根本不加载。它从延迟加载模块重新加载主组件。 app-routing.component.ts planet-detector-routeting.module.ts 所以在上面的例子中,当你输入“http://localhost:4200/planet-detector/first”时,它会加载DetectorCo

  • 我目前面临的问题是如何处理聚合中实体之间的关联。 考虑以下示例: 现在,我们有一个,User“实体,也是我的聚合根。他可以有一个,Product”和多个,别名。我现在需要的是检索相关的,Product和,,域模型中的“按需别名”。用户由UserFactory创建,当从持久性数据创建实体时,可以单独使用,也可以在UserRepository中使用。 这样做的原因是因为我们的业务逻辑(如您在示例中看到

  • 问题内容: 我正在使用Spring事务,因此当POJO到DTO转换时,该事务仍然处于活动状态。 我想防止Dozer触发延迟加载,以使隐藏的sql查询永远不会发生:所有获取都必须通过HQL显式完成(以获得对性能的最佳控制)。 这是一个好习惯吗(我在任何地方都找不到它)? 如何安全地做? 我在DTO转换之前尝试了这个: 我不知道事务会发生什么,但是Hibernate会话不会关闭,并且仍然会发生延迟加载

  • 为了显示这种关系,让我们开始定义一个简单的模块,作为我们的示例应用程序的根模块。 app/app.module.ts 到目前为止,这是一个非常常见的模块,依赖于,有一个路由机制和两个组件:AppComponent和EagerComponent。 现在,让我们专注于定义导航的应用程序(AppComponent)的根组件。 app/app.component.ts import { Component