2015-04-09 2 views
2

Я работаю над угловым приложением, и я пользуюсь службой, которая должна загружать некоторые детали с сервера до завершения выполнения приложения.Угловое ожидание обещания в module.run

application.run(($myService)=>{ 
    myService.loadSomething() //The application should pause until the execution of the Service 
           //is completed until this the browser shoudl stay in a "loading state" 
}); 

Возможно, что-то подобное возможно?

ответ

4

Познакомьтесь с $q и попробуйте спланировать свое приложение, так как оно не должно ждать, пока что-нибудь случится. Асинхронность - это ключ каждого приложения AngularJS.

Если вы используете маршрутизатор, ознакомьтесь с resolve, что также поможет вам «ждать» данных до того, как будет показан маршрут/представление.

6

Не в .run - функция .run не будет "блокировать". Как правило, можно использовать ngRoute/ui-router и использовать свойство resolve.

Если вы не хотите идти по этому пути, вы можете создать контроллер приложения уровня и «решить» есть:

.controller("AppCtrl", function($scope, loaderSvc){ 
    $scope.load = false; 
    loaderSvc.preload().then(function(){ 
     $scope.load = true; 
    }); 
}); 

и в представлении:

<div ng-controller="AppCtrl"> 
    <div ng-if="::load" ng-include="'main.html'"> 
</div> 
+0

один вопрос, я новичок в угловой, а также. Что означает '::' в ':: load'? Спасибо – Tico

+1

@Tico в одну сторону https://blog.thoughtram.io/angularjs/2014/10/14/exploring-angular-1.3-one-time-bindings.html – Azadrum

Смежные вопросы