在AngularJs中,在API响应之前渲染模板

Rendering of template before a response from API in AngularJs

本文关键字:响应 AngularJs API      更新时间:2023-09-26

我使用angular-slick库通过ng-repeat在幻灯片上显示项目。这些项目是我通过异步调用API获得的。我的问题是模板是在API的响应之前呈现的。

这是我的控制器

    angular.module('myApp')
  .controller('homepageCtrl', ['$scope', '$routeParams', '$http', function($scope, $routeParams, $http) {
    $http({method: 'GET', url: 'https://myapi.com/xxxxxx'}).
    success(function(data, status, headers, config) {
            $scope.articlesSlide = data.articles
    });
  }]); 

这是我的模板

<slick infinite="true" dots="true" arrows="true">
          <div ng-repeat="articleSlide in articlesSlide">
          <a href="/{{articleSlide.cat}}/articulo/{{articleSlide.slug}}" class="dentro" title="Ver noticia">
            <div class="imagen"><img ng-src="{{articleSlide.image}}" alt="{{articleSlide.title}}" /></div>
            <div class="texto">
              <div class="inner">
                <div class="cat">{{articleSlide.0.cat}}</div>
                <h2>{{articleSlide.title}}</h2>
              </div>
            </div>
          </a>
          </div>
          </slick>

为了等待http调用从服务器获取响应,您需要使用promise。在promise被解析之后,只有它应该填充articleslide作用域变量。在模板中对articleesslide变量进行ng-show检查,这样当它为null时,就不会显示任何内容(直到时间承诺被解决)

文档:

角承诺示例