我正在尝试为我的Samsung Gear S3创建一个应用程序,该应用程序从API提取数据,动态创建Listview,并使用通过API返回的数据传播它。我已经将项目放在列表中了,但是当页面隐藏时,我想从列表中删除所有内容。由于我首先以编程方式进行操作,因此没有简单的方法,例如使用querySelector删除所有元素并刷新Listview。
也就是说,我如何使用.addItem
-是否有未记录的.removeItem
或等效文件?
此刻,我正在监听pagebeforehide
事件,并在创建的Listview上调用.destroy()
-在清除_items
属性但删除Listview的意义上,它起作用仍然显示以前的所有项目...
我现在拥有的代码可以在下面看到。
(function() {
var page = document.getElementById('search.results'),
listView;
var elems = [ ];
page.addEventListener("pagebeforeshow", function() {
if(sessionStorage.length && sessionStorage.getItem("currentResults")) {
var currentResults = JSON.parse(sessionStorage.getItem("currentResults"));
var elem = document.getElementById("results-list");
listView = tau.widget.Listview(elem, { dataLength: currentResults.length, bufferSize: 10 });
listView.setListItemUpdater(function(listElement, newIndex) {
var data = currentResults[newIndex];
listElement.innerHTML = data.Description;
listElement.id = data.EAN;
});
}
$("li").click(function(e) {
var li = $(e.target);
if(li.attr("id")) {
var EAN = li.attr("id");
tau.changePage("product.html", { name: li.innerHTML, ean: EAN });
}
});
});
page.addEventListener("pagebeforehide", function() {
console.log("page before hide");
if(sessionStorage.length && sessionStorage.getItem("currentResults")) {
console.log(sessionStorage);
sessionStorage.removeItem("currentResults");
console.log(sessionStorage);
}
listView.destroy();
console.log(listView);
});
}());
答案 0 :(得分:0)
此列表实际上没有用于删除项目或绑定到数据的API。 我看到您实际上已经解决了这个问题。
我认为现在清除列表的基本元素就足够了,例如。 listView.element.innerHTML = ""
或document.getElementById("results-list").innerHTML = ""
。
我认为您也可以在https://github.com/Samsung/TAU/issues上创建问题
因为.destroy()
方法应删除在构建小部件之前未附加到小部件的项目。