TVML / tvOS 检测滚动结束
TVML / tvOS Detect end of scroll
我有 collection 清单和书架。我只能下载 10 个项目。当用户滚动到结束时,我应该提出新的请求。但我不知道如何在 xml 或 js
中检测滚动结束
我有同样的要求ui,但我找不到任何直接的方法来实现这一点,所以我为我的应用程序所做的可以告诉你。
第 1 步: 使用 xml 在 UI 上呈现 10 个项目时,您可以向 ui 元素添加一个属性(对我来说是锁定)在 xml 文件中。
例如:<锁定索引="{{索引}}">
第 2 步: 添加事件列表的文档
doc.addEventListener("highlight",_handleHighlight)
Step-3 : 每次 lockup 获得焦点时,控制都会来到 _handleHighlight 函数。在那里你可以找到 index ,基于它执行分页。
_handleHighlight(event) {
var self = this;
var ele = event.target;
var index = ele.getAttribute("index")
// if idndex > (item.count - 3) perform pagination
}
我发现了 Apple 的示例代码并发现了一个有趣的事件。它调用 "needsmore"。
//A DocumentController subclass that handles pagination for multiple shelfs
class ShelfDocumentController extends DocumentController {
setupDocument(document) {
super.setupDocument(document)
let shelfs = document.getElementsByTagName("shelf")
if (!shelfs || shelfs.lenth == 0) { return }
//enumerate all shelfs in the template
for (let idx = 0; idx < shelfs.length; ++idx) {
let shelf = shelfs.item(idx)
shelf.page = 1
//using the data url from the shelf's first section (there should only be one section per shelf)
let sections = shelf.getElementsByTagName("section")
if (!sections || sections.length == 0) { continue }
let section = sections.item(0)
let pageUrl = section.getAttribute("dataURL")
//add the listener to the shelf
shelf.addEventListener("needsmore", (event) => {
//replace this code with your logic for getting new pages
shelf.page = shelf.page + 1
if (shelf.page > 10) { return }
let nextPageUrl = pageUrl.replace("\.json", "_" + shelf.page + ".json")
this.fetchNextPageAtURL(nextPageUrl, section);
})
}
}
}
我有 collection 清单和书架。我只能下载 10 个项目。当用户滚动到结束时,我应该提出新的请求。但我不知道如何在 xml 或 js
中检测滚动结束我有同样的要求ui,但我找不到任何直接的方法来实现这一点,所以我为我的应用程序所做的可以告诉你。
第 1 步: 使用 xml 在 UI 上呈现 10 个项目时,您可以向 ui 元素添加一个属性(对我来说是锁定)在 xml 文件中。
例如:<锁定索引="{{索引}}">
第 2 步: 添加事件列表的文档
doc.addEventListener("highlight",_handleHighlight)
Step-3 : 每次 lockup 获得焦点时,控制都会来到 _handleHighlight 函数。在那里你可以找到 index ,基于它执行分页。
_handleHighlight(event) {
var self = this;
var ele = event.target;
var index = ele.getAttribute("index")
// if idndex > (item.count - 3) perform pagination
}
我发现了 Apple 的示例代码并发现了一个有趣的事件。它调用 "needsmore"。
//A DocumentController subclass that handles pagination for multiple shelfs
class ShelfDocumentController extends DocumentController {
setupDocument(document) {
super.setupDocument(document)
let shelfs = document.getElementsByTagName("shelf")
if (!shelfs || shelfs.lenth == 0) { return }
//enumerate all shelfs in the template
for (let idx = 0; idx < shelfs.length; ++idx) {
let shelf = shelfs.item(idx)
shelf.page = 1
//using the data url from the shelf's first section (there should only be one section per shelf)
let sections = shelf.getElementsByTagName("section")
if (!sections || sections.length == 0) { continue }
let section = sections.item(0)
let pageUrl = section.getAttribute("dataURL")
//add the listener to the shelf
shelf.addEventListener("needsmore", (event) => {
//replace this code with your logic for getting new pages
shelf.page = shelf.page + 1
if (shelf.page > 10) { return }
let nextPageUrl = pageUrl.replace("\.json", "_" + shelf.page + ".json")
this.fetchNextPageAtURL(nextPageUrl, section);
})
}
}
}