【问题标题】:Windows 8/ Metro UI data-binding javascriptWindows 8/ Metro UI 数据绑定 javascript
【发布时间】:2012-08-17 15:18:54
【问题描述】:

我正在使用适用于 windows 8 的 javascript/HTML 创建一个应用程序,它基本上显示从 html 文件中提取的文本。

我正在使用 data.js 文件来组织组和项目。其中一个属性是“url”,它存储包含应用程序主要内容的 html 页面的 url。

我想出了这段代码来从包含要显示的内容的 html 页面中检索 html 代码:

WinJS.UI.Fragments.renderCopy(url)
                  .done(function (fragment) {
                  return fragment;
});

如何为 data.js 中数组中的每个项目运行此代码并绑定数据,以便内容来自 HTML 页面,标题/标题来自 data.js 文件?

如果我造成任何混乱,我深表歉意。我将不胜感激。

谢谢。

【问题讨论】:

    标签: javascript html data-binding windows-8


    【解决方案1】:

    假设您想坚持使用 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 并将 title 元素绑定到 innerHTML 而不是 textContent。

    <h4 class="item-title" data-win-bind="innerHTML: title"></h4>
    

    您还需要将自定义渲染器分配给列表视图。您可以在 HTML 标记中执行此操作,或者只需将 groupItems.js 中的模板 js 更改为此...

     listView.itemTemplate = customRender;
    

    如果您要创建自己的数据类,您可能希望将来自客户渲染器的承诺链放入类构造函数中,从而无需客户渲染器。

    【讨论】:

    • 非常感谢您的帮助 :) 再问一个问题。所以“数据集”有一个名为“url”的属性,它基本上说明了要在应用程序中呈现的页面的 URL。我将自定义渲染代码更改为: return WinJS.UI.Fragments.renderCopy(currentItem.data.url, divcontent) 并且它可以很好地渲染页面。我正在使用拆分视图,当我更改“itemlistsection”上的项目时,新的 HTML 代码被绑定在以前的数据之下。我该如何改变它?谢谢你:)
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多