2014-01-27 3 views
1

У меня есть приложение AngularJS, и я бы хотел предварительно загрузить $ scope или $ rootScope данные приложения, прежде чем какой-либо из кода контроллера будет выполнен. Это будет включать в себя такие вещи, как роли, разрешения, локализации и т. Д.Bootstrap AngularJS приложение с данными с сервера

Единственный жизнеспособный вариант, который я нашел, - это добавить объект разрешения в КАЖДЫЙ один из моих маршрутов/контроллеров, я считаю, что это кошмар для обслуживания.

Я также читал о application.run(), однако нет способа получить зависимости от службы для разрешения. Это означает, что вы можете позвонить службе на свой сервер в запуске, но он не будет ждать, пока обещание закончится, прежде чем продолжить.

Я чувствую, что это довольно вопиющая проблема с AngularJS.

Надеюсь, у меня просто отсутствует что-то очевидное из API.

Вот очень похожий вопрос, размещенный в течение лета, никакого реального решения не было опубликовано. AngularJS load data in app startup

ответ

1

Обычно resolve это хороший способ сделать, если вы хотите сделать что-то с угловыми, а затем сделать паузу, а затем делать другие вещи, с угловыми.

Но если вы хотите сделать что-то без углового сначала, тогда начните Угловое, вы можете вручную запустить Angular.js с angular.bootstrap. Чтобы вы могли сначала загрузить свои данные, тогда, когда вы почувствуете готовность. Вызовите angular.bootstrap() для запуска углового модуля.

Что вы должны подготовить:

  1. Удалить ng-app="XXX" из документа.
  2. Звоните angular.bootstrap() после того, как все будет готово.

Doc for angular.bootstrap()

-1
angular.module('myApp').controller('MYContoller', function ($scope) 
{ 
    $scope.init = function() 
    { 
     ... 
    }; 
    $scope.init(); 

    } 

Это должно работать, вы можете также использовать нг-Init, немного думать, что состояние документы, которые вы не должны

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