2016-06-03 3 views
1

Я хочу вызвать функцию javascript перед загрузкой содержимого представления, потому что Я хочу добавить класс «light_theme» в тег body. Поэтому я должен добавить этот класс перед загрузкой представления, чтобы все выглядело идеально.Как вызвать функцию перед загрузкой представления?

Но в настоящий момент загружен класс объявлений AngularJs в теле после просмотра, что делает вещь немного странной.

Например, цвет фона по умолчанию черный, но после добавления этого класса он внезапно меняет цвет фона и другие цветовые схемы, что не выглядит хорошо.

Вот почему я хотел добавить этот класс перед загрузкой вида. Я исследовал, но не мог найти хорошего решения.

Если это действительно возможно?

+0

Возможный дубликат [Добавить класс в объект при загрузке страницы] (http://stackoverflow.com/questions/4995440/add-class-to-object-on-page-load) –

+0

Рассмотрите публикация любого html/js, который вы создали –

+0

Как загружается представление? – Cyril

ответ

3

не использовать jquery, чтобы решить эту проблему. вы можете сделать это на этапе запуска, где у вас есть доступ к URL-адресу. если url == some-url, то добавьте класс или еще лучше добавить другое свойство с именем theme на объект $ state.

app.run(function ($rootScope) { 
    $rootScope.$on("$stateChangeStart", function(event, toState, fromState){ 

    if (toState.theme === "xyz") { 
     $('div').addClass('themeClass'); 
    } else { 
     $('div').removeClass('themeClass'); 
    } 

    }); 
}); 
1

Один из способов будет использовать data-ng-init

По мнению вы называете $scope.init() она будет называться, когда загружен вид.

что-то вроде этого:

<div class="wrap-items" data-ng-init="init()"> 
... 
.. 
</div> 

Теперь в функции инициализации сферы вы можете изменить класс.

2

Вы должны использовать «решительность» (в состоянии конфигурации провайдера), который всегда будет гарантировать, что функция будет вызвана, прежде чем ваши взгляды нагруженного маршрутизатора (состояние провайдер) показаны пользователю

Например у вас есть вид на состоянии «новости», нам нужно позвонить, чтобы получить сообщение данных:

.when("/news", { 
    templateUrl: "newsView.html", 
    controller: "newsController", 
    resolve: { 
     message: function(messageService){ 
      return messageService.getMessage(); 
     } 
} 

Тогда в newsController вы можете обратиться к MessageData как обычные инъекции:

app.controller("newsController", function ($scope, message) { 
    $scope.message = message; 
}); 

Некоторых более подробную информацию можно найти here

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