2013-12-13 2 views
2

У меня есть страница с listView. Мне нужно прочитать позицию последнего элемента в спискеView, который был загружен, но я не могу найти подходящий момент или событие для этого. В принципе, я не могу найти способ определить, загружены ли все элементы в список.Когда элементы в списке доступны в dom?

Это моя готова функция, как вы можете видеть, что я могу найти, когда нагрузка ListView является полной, но кажется, что даже в тот момент элементы не доступны в DOM:

Существует только один список на странице.

ready: function (element, options) { 

    //now the onloadingstatechanged evenet for the list 
    var listView = element.querySelector(".itemslist").winControl; 
    listView .onloadingstatechanged = function (args) { 
     if (args.srcElement === listView .element && listView .loadingState === "complete") { 

      debugger; 

      /* THIS LINE SHOULD WORK IF THE ITEMS WERE LOADED, items IS INSTEAD null*/ 
      var items = element.querySelector(".itemslist .win-itemsblock"); 

      listView .onloadingstatechanged = null; 
     } 
    }; 
} 

Вот ListView в моем объекте DOM, когда приложение остановки на debugger; инструкции:

enter image description here

и вот ListView в моем объекте DOM после выполнения программы сезам конца:

enter image description here

+0

Какова цель попытки получить отображаемые элементы списка. как правило, хорошо использовать привязку и шаблон. – Sushil

+0

Я пытаюсь понять позицию последнего элемента в спискеView, чтобы я мог добавить пользовательскую кнопку в конце списка. вот так: http://stackoverflow.com/questions/20546995/how-can-i-add-a-button-at-the-end-of-a-listview –

ответ

2

Тип отладчика; в корпусе события, а затем осмотрите DOM с помощью DOM Inspector и посмотрите, был ли ваш ListView выделен. Вы правы, что когда состояние загрузки завершено, вы должны иметь доступ к элементам DOM, поэтому, возможно, что-то не так с вашим селектором.

+1

Я обновил свой вопрос с целью объекта DOM внутри события завершения загрузки, а также представление о том, что представляет собой listView после этого. Я не могу найти, что происходит в случае, когда все объекты win-container загружаются. Вы можете видеть это, если селектор в порядке. –

+1

Возможно, стоит упомянуть, что я загружаю данные асинхронно, но это не должно влиять на событие –

+2

Я думаю, ваша проблема в том, что вы отключите событие onloadingstatechanged после его первого запуска. Он должен запускаться каждый раз, когда загружаются элементы. Когда он загружается впервые, у него нет данных в ListView для загрузки. Удалите строку 'listView .onloadingstatechanged = null;' и проверьте, не перестает ли ваша точка останова указывать ненулевое значение для элементов. –

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