WinJS ListView Динамическая группировка

У меня есть довольно стандартная настройка WinJS ListView для привязки к некоторым сгруппированным данным.

Исходя из настроек приложения, я хочу изменить, отображается ли группировка или нет. Я могу частично сделать это, проверяя, когда страница загружается, и пропуская настройки группирования, например, так:

            if (!Data.getCategoryGrouping()) {
                var content = element.querySelector(".itemspage");
                content.className += " noGroup";
                listView.groupHeaderTemplate = null;
                listView.groupDataSource = null;
            }
            else {
                listView.groupHeaderTemplate = element.querySelector(".headerTemplate");
                listView.groupDataSource = Data.groups.dataSource;
            }

Однако это не помогает в случае, когда страница уже видна, и пользователь настраивает параметры. (И, честно говоря, в любом случае, вероятно, это не лучший способ сделать это.)

Какие-нибудь мысли?

1 ответ

После загрузки страницы вы можете просто обнулить groupDataSource, чтобы отключить группировку. Как это...

q("#myButton").onclick = function(e) {
    myListView.groupDataSource = null;
};

И вы можете просто переключать его с помощью этой кнопки, как это...

q("#myButton").onclick = function(e) {
    if (myListView.groupDataSource != null) myListView.groupDataSource = null;
    else { myListView.groupDataSource = myGroupedList.groups.dataSource; }
};

Кстати, вместо использования content.className += " noGroup"; как вы делали в своем коде, я рекомендую вам использовать content.classList.add("noGroup");,

Другие вопросы по тегам