[WinJS] Как се bind-ва динамично генерирано ListView в Windows Store App?


0

Здравейте колеги,

Правя приложение на Windows Store, но от доста време не мога да се справя с динамично генерираното ми ListView. Използвам single-page navigation.

Имам страница products.html, в която имам следния код:

<!-- Product Template -->
<div id="product-template" data-win-control="WinJS.Binding.Template" style="display: none">
    <div class="product-template-item">
        <h4 data-win-bind="innerText: Title"></h4>
        <h5 data-win-bind="innerText: Price"></h5>
    </div>
</div>
 
<!-- Product List -->
<div id="product-list-view"
    data-win-control="WinJS.UI.ListView"
    data-win-options="{ itemDataSource : DataProducts.itemList.dataSource, 
itemTemplate: select('#product-template'), 
layout: {type: WinJS.UI.GridLayout}}">
</div>
 
Отделно във файла си products.js имам глобална променлива (дефинирано namespace):

WinJS.Namespace.define("DataProducts", publicProductsMembers);
 
Тук всъщност "DataProducts" ми съдържа един динамично генериран JSON обект, който пък го създавам, извличайки данни за продукти от web service.
 
Проблемът ми идва от това, че в html-a си имам създаден template за ListView-то, но всъщност кодът ми в js файла все още не се е изпълнил и гърми.
 
Не знам дали успях да го обясня добре, но мисля, че който се е занимавал ще може да ме разбере какво точно имам предвид.
 
Благодаря предварително за всяка оказана помощ, че вече тотално изциклих :).



Отговори



1
Здравей,
Нормално е да ти гърми, защото се опитва да достъпи пропъртита, които са върху обект, който е null. Защо просто не създадеш някакъв празен елемент, който да заменяш когато ти тръгне script-а :) ?
Или пък да имаш друг script, който преди да се навигира към страницата да ти вика генерирането на данните :) - това също ще ти свърши работа.
Поздрави,
Жоро



0
Благодаря за отговора :).

от georgi.s.yankov (6219 точки)