Galaxy: динамически обновлять PageIndicator после создания - PullRequest
0 голосов
/ 06 ноября 2019

Я занимаюсь разработкой приложения для Samsung Gear S3 и Samsung Galaxy с использованием веб-приложения Tizen .

I 'я пытаюсь использовать PageIndicator, чтобы показать пользователю, прокручивающему динамическое количество страниц, сгенерированных после вызова API, и это количество страниц изменяется, когда пользователи выполняют определенные действия. Документация: https://developer.tizen.org/dev-guide/3.0.0/org.tizen.web.apireference/html/ui_fw_api/Mobile_UIComponents/mobile_PageIndicator.htm

Можно ли обновить количество страниц после создания PageIndicator?

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

Код

function PageController() {
    /* Keep track of scope*/
    var _this = this;

    /* Tau elements */
    var pageIndicator = null;

    this.showIndicator = function(active, total) {
        if (pageIndicator != null) {
            pageIndicator.destroy();
        }

        var elPageIndicator = document.getElementById("pageIndicator");
        pageIndicator = tau.widget.PageIndicator(
          elPageIndicator, {maxPage: total, numberOfPages: total});

        console.log("Created");
        console.log(pageIndicator);
        pageIndicator.setActive(active);
    }
}

Я также попробовал функции configure () или _configure (), которые, как я заметил, существует в объекте при использовании консольного регистратора, но безуспешно.

Код

function PageController() {
    /* Keep track of scope*/
    var _this = this;

    /* Tau elements */
    var pageIndicator = null;

    this.showIndicator = function(active, total) {
        if (pageIndicator == null) {
            var elPageIndicator = document.getElementById("pageIndicator");
            pageIndicator = tau.widget.PageIndicator(
              elPageIndicator, {maxPage: total, numberOfPages: total});

            console.log("Created");
            console.log(pageIndicator);
        }

        console.log("Reconfigure");
        pageIndicator.configure({maxPage: total, numberOfPages: total});
        pageIndicator.refresh();
        pageIndicator.setActive(active);
        console.log(pageIndicator);
    }
}

Также попытка установить параметры вручную через pagindicatorobject.options.maxPage = моя новая сумма и pageindicatorobject.options.amountPages = моя новая сумма, после которой я пытаюсь выполнить refresh (), не сработало.

Код

function PageController() {
    /* Keep track of scope*/
    var _this = this;

    /* Tau elements */
    var pageIndicator = null;

    this.showIndicator = function(active, total) {
        if (pageIndicator == null) {
            var elPageIndicator = document.getElementById("pageIndicator");
            pageIndicator = tau.widget.PageIndicator(
              elPageIndicator, {maxPage: total, numberOfPages: total});

            console.log("Created");
            console.log(pageIndicator);
        }

        console.log("Reconfigure");
        pageIndicator.options.maxPage = total;
        pageIndicator.options.numberOfPages = total;
        pageIndicator.refresh();
        pageIndicator.setActive(active);
        console.log(pageIndicator);
    }
}

В каждом случае выполнения следующего кода

var pageController = new PageController();
pageController.showIndicator(x, y);

Он всегда возвращает тот же pageIndicator обратно в консоль, никогда не заменяя его, когдановый конфиг был дан. Как я могу решить эту проблему?

1 Ответ

2 голосов
/ 07 ноября 2019

Проверьте раздел «Настройка параметров компонента пользовательского интерфейса» в Компоненты пользовательского интерфейса (Tizen).

Для динамического изменения параметров можно использовать виджет option метод. В примере:

    console.log("Reconfigure");
    pageIndicator.option({maxPage: total, numberOfPages: total})
    pageIndicator.setActive(active);
    console.log(pageIndicator);
}

В этом примере нет необходимости вызывать метод refresh().

Или вы можете использовать набор данных HTMLElement, чтобы установить параметры базового виджета HTMLElement, а затемвызовите обновление на виджете.

Пример:

    console.log("Reconfigure");
    elPageIndicator.dataset['maxPage'] = total;
    elPageIndicator.dataset['numberOfPages'] = total;
    pageIndicator.refresh();
    pageIndicator.setActive(active);
    console.log(pageIndicator);
}
...