У меня есть функция, которую я хочу вызвать после загрузки содержимого страницы. Я прочитал о $ viewContentLoaded, и он не работает для меня. Я ищу что-то вроде
document.addEventListener('DOMContentLoaded', function () {
//Content goes here
}, false);
Вышеупомянутый вызов не работает для меня в контроллере AngularJs.
Ответы:
Согласно документации $ viewContentLoaded , он должен работать
$viewContentLoaded
событие генерируется, что означает, что для получения этого события вам нужен родительский контроллер, такой какОт
MainCtrl
вас можно прослушать событиеПроверьте демо
источник
ng-repeat
и несколько вложенных директив, которые будут генерировать HTML / контент на основе сложных циклов и условий. Рендеринг продолжается некоторое время, даже после$viewContentLoaded
запуска события. Как вы можете убедиться, что все элементы были полностью отрисованы, а затем выполнить определенный код? Есть отзывы?Угловой <1.6.X
Угловой> = 1.6.X
источник
фиксированный - 2015.06.09
Используйте директиву и метод углового элемента
ready
следующим образом:JS
HTML
или для тех, кто использует контроллер-как синтаксис ...
Преимущество этого состоит в том, что вы можете использовать как можно более широкий или детальный пользовательский интерфейс и удалять логику DOM с контроллеров. Я бы сказал, что это рекомендуемый угловой путь.
Возможно, вам придется расставить приоритеты в этой директиве, если у вас есть другие директивы, работающие на том же узле.
источник
elem.ready( $scope.$apply( readyFunc( $scope )));
любых идей, почему это может быть? Возможно, обновление для angular произошло? Во всяком случае - это элегантный подход, если бы он мог работать.attrs.onReady
, должно быть то, что есть сейчас. Другая проблема заключалась в том, что я назвал это забавным .... ... что я получаю за преобразование coffeescript из памяти в JS.$timeout
; Вы явно создаете надстройку. DOM-узел просто для выполнения не-DOM-логики; Его можно использовать повторно, только если этот метод находится далеко в иерархии $ scope, так что дочерние области наследуют его, я просто думаю, что он выглядит плохо в перспективе NG;$timeout(function() {})
всегоelem.ready()
. В противном случае это была$digest already in progress
ошибка. Но в любом случае, спасибо огромное! Я боролся с этим в течение последнего часа.Вы можете напрямую позвонить, добавив
{{YourFunction()}}
после HTML-элемента.Вот такой
Plunker Link
.источник
Я должен был реализовать эту логику при работе с гугл чартами. то, что я сделал, было то, что в конце моего html внутри определения контроллера я добавил.
и в этой функции просто вызовите свою логику.
источник
Выше метод работал на меня
источник
Вы можете вызвать javascript-версию события onload в угловых js. это событие ng-load может быть применено к любому элементу dom, такому как div, span, body, iframe, img и т. д. Ниже приведена ссылка для добавления ng-load в существующий проект.
скачать ng-load для угловой js
Ниже приведен пример для iframe: после загрузки в контроллере будет вызвана функция testCallbackFunction.
ПРИМЕР
JS
HTML
источник
Если вы получаете сообщение об ошибке $ digest уже в процессе, это может помочь:
источник
Запуск после загрузки страницы должен быть частично удовлетворен путем установки прослушивателя события на событие загрузки окна
Внутри
module.run(function()...)
angular у вас будет весь доступ к структуре модуля и зависимостям.Вы можете
broadcast
иemit
события для связи мостов.Например:
источник
Я использую
{{myFunction()}}
в шаблоне , но затем нашел другой способ здесь , используя$timeout
внутри контроллера. Думал, что поделюсь этим, прекрасно работает для меня.источник
Если вы хотите, чтобы определенный элемент был полностью загружен, используйте ng-init для этого элемента.
например
<div class="modal fade" id="modalFacultyInfo" role="dialog" ng-init="initModalFacultyInfo()"> ..</div>
функция initModalFacultyInfo () должна существовать в контроллере.
источник
Я обнаружил, что если у вас есть вложенные представления - $ viewContentLoaded запускается для каждого из вложенных представлений. Я создал этот обходной путь, чтобы найти окончательный $ viewContentLoaded. Кажется, работает нормально для установки $ window.prerenderReady в соответствии с требованиями Prerender (входит в .run () в основном app.js):
источник
источник
Решение, которое работает для меня, заключается в следующем
Код контроллера следующий
HTML-код является следующим
источник
Я использую,
setInterval
чтобы ждать загруженного контента. Я надеюсь, что это может помочь вам решить эту проблему.источник
setInterval
в качестве решения в 2016 году ?