2014-08-22 4 views
1

У меня возникла ситуация, когда я хочу вызвать виджет с угловым размером iff. Запрос arg присутствует в текущем URL-адресе. Мой подход состоит в проверке (при загрузке страницы), если аргумент присутствует, и если да, то добавьте немного разметки к <body>, который будет получить приложение прокатки:Как добавить ng-приложение после загрузки страницы?

var exampleApp = angular.module('exampleApp', []); 

//init 
$(function() { 

    var widgetMarkup = "<div ng-app=\"exampleApp\"><div ng-include=\"'/partials/widget.html'\"></div></div>"; 

    if (window.location.href.indexOf('?arg') > -1) { 
    $(document.body).append(widgetMarkup); 
    } 

}); 

ПРОБЛЕМА: Разметка добавляются DOM, но не имеет никакого эффекта. Но если я добавлю такую ​​же разметку в необработанный HTML-файл, приложение будет поднято, а частичное будет показано. Нужно ли мне указывать Angular на повторное сканирование страницы для директив?

+0

https://docs.angularjs.org/guide/bootstrap#manual-initialization – Blackhole

ответ

3

вы хотите angular.bootstrap. Назовите это, когда ваш DOM готов, и все добавлено.

angular.bootstrap(document, ['exampleApp']); 

Начнётся Угловое на документе, как если бы она была ng-app на нем. Вы можете загружать его в любой элемент, который вы хотите.

1

Вам необходимо вручную загрузить приложение.

var exampleApp = angular.module('exampleApp', []); 
    if (window.location.href.indexOf('?arg') > -1) { 
    angular.element(document).ready(function() { 
     angular.bootstrap(document, ['exampleApp']); 
    }); 
    } 

Больше информации здесь: angular docs

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