不太確定如何解釋這個問題我有我希望這是有道理的。我想創建一個列表視圖,並建立了所有的數據綁定,並創建了一個模板等,所以它很好地顯示數據,但我顯示每個listview瓦片上的一個元素是一個現場滴答時鐘。真正的問題是如何在不重繪整個列表視圖的情況下更新所有的listview對象。WinJS - 不斷更新到列表視圖
我現在唯一的工作方法是每秒鐘更新綁定到它的數據,我想顯示的時間,哪個工作,但它重繪整個列表視圖。這是昂貴的,並觸發動畫(可以取消,但不完全聽動畫開始事件)
謝謝!
不太確定如何解釋這個問題我有我希望這是有道理的。我想創建一個列表視圖,並建立了所有的數據綁定,並創建了一個模板等,所以它很好地顯示數據,但我顯示每個listview瓦片上的一個元素是一個現場滴答時鐘。真正的問題是如何在不重繪整個列表視圖的情況下更新所有的listview對象。WinJS - 不斷更新到列表視圖
我現在唯一的工作方法是每秒鐘更新綁定到它的數據,我想顯示的時間,哪個工作,但它重繪整個列表視圖。這是昂貴的,並觸發動畫(可以取消,但不完全聽動畫開始事件)
謝謝!
一種方法是爲您的listview使用JavaScript模板。正常情況下將數據綁定到列表視圖,但將數據模型添加到稱爲時鐘的數據模型。對於要渲染時鐘集的數據項,它的值爲true。而不是在HTML中定義模板在JavaScript中定義模板(您可以在這裏看到如何執行此操作 - http://msdn.microsoft.com/en-us/library/windows/apps/jj585523.aspx)在JavaScript模板中,您可以添加一些邏輯以確定tile是否應該是基於綁定屬性的時鐘,以及if它是建立在時鐘的模板:
function itemTemplateFunction(itemPromise) {
return itemPromise.then(function (item) {
if (item.data.clock == true) {
//TODO: Append HTML and JS for your clock object
//TODO: Perhaps set up a setInterval timer to tick your clock along.
}
else {
//TODO Add the regular template Code, example below
var div = document.createElement("div");
var img = document.createElement("img");
img.src = item.data.picture;
img.alt = item.data.title;
div.appendChild(img);
var childDiv = document.createElement("div");
var title = document.createElement("h4");
title.innerText = item.data.title;
childDiv.appendChild(title);
var desc = document.createElement("h6");
desc.innerText = item.data.text;
childDiv.appendChild(desc);
div.appendChild(childDiv);
return div;
}
})
};
由於訪問數據對象(要做到這一點,我想你仍然有時間),模板,如:
<div data-win-control="WinJS.Binding.Template" id="yourTemplate">
<div data-win-bind="textContent: timestamp"></div>
</div>
在您希望更改物品時鐘的點,通過它們並更新timestamp
屬性,列表視圖將會啓動日期。例如。
var item = getItemToUpdateFromSomewhere();
item.timestmap = "2 O'clock";