Я создаю «путеводитель» для моего сайта с угловым питанием.Подождите, пока DOM будет готов по директиве AngularJS
Я искал варианты и Intro.js казался лучшим. У него была угловая директива, уже готовая и все: Angular Intro.js.
Все работало, как ожидалось, до тех пор, пока я не должен был добавить шаг сначала (и только первый) объект DOM, который вводится привязкой ng-repeat. Я дал всем элементам ng-repeat уникальный идентификатор (через $ index), но Intro.js просто не смог его подтвердить.
Я предполагаю, что Intro пытается найти DIV по указанному ID, но поскольку ng-repeat еще не завершен, DIV этим именем не существует.
Я сделал плункер, где вы можете видеть, что он работает на статическом контенте, но не может познать объекты внутри ng-repeat.
Соответствующий код:
HTML:
<!-- Works -->
<div id="static">This is static content.</div>
<!-- Doesnt work -->
<div id="item{{$index}}" ng-repeat="item in items">
{{ item.name }}
</div>
Угловая Контроллер:
$scope.IntroOptions = {
steps:[
{
element: document.querySelector('#static'),
intro: "This is static content"
},
{
/** ID "item0" belongs to the first element on the ng-repeat **/
element: document.querySelector('#item0'),
intro: "Doesnt work!"
}
],
showStepNumbers: false,
exitOnOverlayClick: true,
exitOnEsc:true,
nextLabel: '<strong>NEXT!</strong>',
prevLabel: '<span style="color:green">Previous</span>',
skipLabel: 'Exit',
doneLabel: 'Thanks'
};
Plunker: http://plnkr.co/edit/kE8P5Kq2Y5CVWEYgyBIo?p=preview
Предполагая, что причина, по которой это причина, не работает, как мне сделать , заставить директиву ждать, пока DOM будет «готова»?
Если мое предположение неверно, почему он не работает тогда?
Всегда отправляйте соответствующий код ** в ** вопрос, не просто ссылку. Ссылки гниют. –
сделаю, спасибо. – pedropeixoto
'document.querySelector' - это грязный код для контроллера. Создайте директиву для управления DOM. – asgoth