Nativescript radlist视图如何按需加载

时间:2019-06-30 11:05:18

标签: nativescript

这可能不是问题,但这是从头开始学习本机脚本时出现的疑问列表。

我在数据表中存储了1000或更多的数据列表。知道我想在列表视图上显示它,但我不想一次读取所有数据。因为我将图像存储在其他目录中,并且也想阅读。因此,对于20到30个数据的性能来说是相当不错的。但是对于1000个数据,要花费15分钟以上的时间才能读取数据以及与之相关的图像。因为我要存储一些高质量的图像。

因此,我决定只读取20张数据及其各自的图像。并显示在列表上。知道用户何时到达列表的第15个数据。我决定从服务器再读取10个数据。

知道当我搜索此内容时,我遇到了“ RadListView按需加载”。 然后我只是看了下面的代码。

public addMoreItemsFromSource(chunkSize: number) {
    let newItems = this._sourceDataItems.splice(0, chunkSize);
    this.dataItems.push(newItems);
}

public onLoadMoreItemsRequested(args: LoadOnDemandListViewEventData) {
    const that = new WeakRef(this);
    const listView: RadListView = args.object;
    if (this._sourceDataItems.length > 0) {
        setTimeout(function () {
            that.get().addMoreItemsFromSource(2);
            listView.notifyLoadOnDemandFinished();
        }, 1500);
        args.returnValue = true;
    } else {
        args.returnValue = false;
        listView.notifyLoadOnDemandFinished(true);
    }
}

在nativescript中,如果我想访问绑定元素xml元素。我必须在关联的js文件的viewmodel或exports.com_name中使用可观察对象。

,但是在此示例中,它以public ..开始!如何在javascript中使用它。

什么是新的WeakRef(this)? 为什么需要它?

如何识别用户已滚动到15个数据,因为我想在他到达第15个数据时加载更多数据。

获取数据后如何更新列表数组并将其显示在列表视图中?

  

最后,我只想知道如何按需使用负载

我试图创建一个我尝试过的游乐场样本,但是它给出了错误。找不到radlistview的模块。

请记住我比较新鲜,所以在回答时请记住这一点。谢谢你,

如果您认为该问题不符合标准,请修改该问题。

2 个答案:

答案 0 :(得分:0)

TypeScript转换为JavaScript

您可以使用任何TypeScript compiler来将源代码转换为JavaScript。甚至还有像官方TypeScript Playground这样的在线编译器。

在我看来,很难再期待ES5示例了。 ES6-9引入了许多新功能,这些功能使JavaScript开发更加容易,并且TypeScript将JavaScript提升到了一个新的层次,从解释器到编译器。

要回答您的问题,您将使用原型链在ES5中的类上定义方法。

fromObject

如果您将addMoreItemsFromSource: function (chunkSize) { .... }; 语法用于Observable,则可以在内部传递这些函数

loadOnDemandMode

WeakRef::通过保持对目标的宽松引用来帮助有效地管理内存,有关更多信息,请访问docs

如何加载更多内容:

如果将Auto设置为loadMoreDataRequested,则每当用户到达滚动结尾时,都会触发addMoreItemsFromSource事件。

loadOnDemandBufferSize决定在滚动结束之前应触发多少个项目。

有关docs的更多信息。

如何更新阵列:

这正是.push(item)函数中展示的内容。在链接到列表视图的ObservableArray上使用import

答案 1 :(得分:0)

您可以在此处查看更新的答案 https://play.nativescript.org/?template=play-js&id=1Xireo