2013-07-24 1 views
3

В настоящее время я участвую в задаче создания pinterest, например, эскизов с использованием плагина wookmark и angularjs. На котором я могу отображать миниатюры, используя $ timeout 10 секунд, потому что сервер требует времени для ответа. Я хотел вызвать макет после того, как данные полностью загрузились. Я пытался с обещанием, но не повезло.

Есть ли способ вызвать макет Wookmark без использования $ timeout?

мой код сильфонных:

myApp.controller("MyCtrl", ['$scope', '$timeout', 'eventData', function($scope, $timeout, eventData) { 
    function init() { 
     $scope.publicstreams = []; 
     $scope.publicstreams = eventData.getEvent(0); 
     $timeout(initWookmark, 10000); 
    } 

    function initWookmark() { 
     var options = { 
      autoResize: true, // This will auto-update the layout when the browser window is resized. 
      container: $('#tiles'), // Optional, used for some extra CSS styling 
      offset: 5, // Optional, the distance between grid items 
      flexibleWidth: 310 // Optional, the maximum width of a grid item 
     }; 
     var handler = $('#tiles li'); 
     $('#tiles').imagesLoaded(function() { 
      // Prepare layout options. 
      // Get a reference to your grid items. 
      // Call the layout function. 
      handler.wookmark(options); 
     }); 
     handler.wookmark(options); 
    } 
    init(); 
}]); 

Любая помощь будет принята с благодарностью!

+0

Существует еще один вариант, называемый угловым-deckgrid. Проверьте это. – nicoabie

ответ

2

Поблагодари Бога!

Наконец-то я понял это сам. Я установил задержку на 0 в $ timeout, и это сработало.

Как?

$ timeout фактически выполняется после завершения рендеринга DOM в браузере. Так что даже задержка в 0 миллисекунд работает.