2013-12-20 4 views
4

Есть ли способ обработки ListView (WinJS), если источник данных имеет нулевые элементы? то есть свойство или способ отображения сообщенияКак показать сообщение, когда в источнике данных Listview Listview нет элементов?

+0

Это было опубликовано полтора года назад и до сих пор не имеет хорошего ответа (http://stackoverflow.com/questions/10503510/how-to-give-a-empty-listview-message-when-there -is-no-data-source) ... Честно говоря, я не уверен, что вы можете сделать это с помощью базового 'itemTemplate' - вам, возможно, придется сделать это полностью обычаем. – jakerella

ответ

0

Я считаю, что самое простое дело - просто иметь span или div, содержащий ваше сообщение, которое отображается только в том случае, когда в списке есть 0 элементов. Это существенно проще при использовании библиотеки связывания, например, KnockoutJS.

Пример (помещается непосредственно под WinJS ListView):

<h4 data-bind="visible: (resultDataSource().length === 0)">No Results Found</h4> 
0

легко сделать с помощью встроенного в WinJS связывания данных

<div 
    data-win-control="WinJS.UI.ListView" 
    data-win-options="{itemDataSource: app.model.items.dataSource}" 
    data-win-bind="style.display: app.model.items app.displayBlockIf" 
    ></div> 
<div data-win-bind="style.display: app.model.items app.displayBlockIfNot">No items.</div> 

В коде:

isSet = function(value) { 
    if (!value) { 
    return false; 
    } 
    if (value.length === 0) { 
    return false; 
    } else { 
    return true; 
    } 
}; 

WinJS.Namespace.define("app", { 
    displayBlockIf: WinJS.Binding.converter(function(value) { 
    if isSet(value) then "block" else "none"; 
    }), 

    displayBlockIfNot: WinJS.Binding.converter(function(value) { 
    if !isSet(value) then "block" else "none"; 
    }), 

    model: { 
    items: new WinJS.Binding.List() 
    } 

}); 

Тогда где-то на ваших страницах ready() функция:

ready: function(element, options) { 
    WinJS.Binding.processAll(element, { app: app }); 
} 
Смежные вопросы