假設你想要堅持data.js的佈局,而不是創建你自己的數據類,我會使用自定義渲染器的列表視圖。
事情是這樣的......
var customRender = WinJS.Utilities.markSupportedForProcessing(function (itemPromise) {
var currentItem = {};
return itemPromise.then(function (item) {
currentItem = item;
var myDiv = document.createElement("div");
return WinJS.UI.Fragments.renderCopy("/html/1_BasicFragmentLoad_Fragment.html", myDiv)
})
.then(function (fragment) {
var itemTemplate = WinJS.Utilities.query('.itemtemplate')[0];
currentItem.data.title = fragment.innerHTML;
return itemTemplate.winControl.render(currentItem.data);
});
}
);
在這個例子中,我將html片段的內容綁定到data.js.中給定項目的標題上。您需要更新itemtemplate並將標題元素綁定到innerHTML而不是textContent。
<h4 class="item-title" data-win-bind="innerHTML: title"></h4>
您還需要將自定義渲染器分配給列表視圖。您可以在HTML標記做到這一點,或只是更改模板JS在groupItems.js這個...
listView.itemTemplate = customRender;
如果你要創建自己的數據類,你可以把它放到承諾鏈從客戶渲染器放入類構造器中,消除了對客戶渲染器的需求。
非常感謝您的幫助:)只是還有一個問題。所以'dataset'有一個名爲'url'的屬性,它基本上規定了要在應用中呈現的頁面的URL。我將自定義呈現代碼更改爲:return WinJS.UI.Fragments.renderCopy(currentItem.data.url,divcontent),並使頁面呈現良好。我使用拆分視圖,當我更改「itemlistsection」中的項目時,新的HTML代碼被綁定在以前的數據下面。我該如何改變?謝謝 :) – 2012-08-20 19:49:54