Galaxy:创建后动态更新 PageIndicator

Galaxy: Dynamically update PageIndicator after creation

我正在为 Samsung Gear S3 and Samsung Galaxy watches, using a Tizen 网络应用程序开发一个应用程序。

我正在尝试使用 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,而不会在给出新配置时替换它。我该如何解决这个问题?

请检查 UI Components (Tizen) 中的 "Setting UI Component Options" 部分。

要动态更改选项,您可以使用小部件 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);
}