Pregunta

app.controller("MainController", function($scope, $http){
    $scope.items= [];
    console.log('hi');
    $http.get('../assets/data/data.json').then(function(response) {
        $scope.drinks =response.data.drinks;
    });
});

app.directive('cycle', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
           $(element).cycle({
               fx: 'fade',
               timeout: 10
           });
        }
    };
});

Tengo el AngularJS anterior y cuando ejecuto mi página se muestra Console.Log [cycle] terminating; too few slides: 0 y luego muestra el Get Request después.

¿Cómo podría ejecutar la directiva una vez que $http.get ha terminado?

¿Fue útil?

Solución

intenta hacer esto

<div cycle ng-if="drinks"></div>

De esa manera, el elemento que contiene la directiva se compilará en el navegador solo cuando las bebidas estén disponibles.

Otros consejos

Hay dos cosas que puedes usar.

  • ng-cloak

  • ng-show y ng-hide y personalizado scope propiedad

También considere usar animación en lugar de crear animación manual dentro de la directiva

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top