javascript - Windows 8/Metro UI 数据绑定(bind) javascript

标签 javascript html data-binding windows-8

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

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

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

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

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

如果造成任何困惑,我深表歉意。我将不胜感激任何帮助。

谢谢。

最佳答案

假设您想坚持使用 data.js 的布局而不创建自己的数据类,我会为 ListView 使用自定义渲染器。

类似这样的事情...

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 片段的内容绑定(bind)到 data.js 中给定项目的标题。您将需要更新 itemtemplate 并将 title 元素绑定(bind)到 insideHTML 而不是 textContent。

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

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

 listView.itemTemplate = customRender;

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

关于javascript - Windows 8/Metro UI 数据绑定(bind) javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12008556/

相关文章:

asp.net-mvc-2 - knockout.js 将表单加载到 viewModel 中

javascript - 在nodejs中使用Multipart上传文件失败

c# - 将多个 DataBindings 添加到 Winforms 标签

javascript - 单击图层时如何获取要素组的名称/ID

html - 将 <button=type> 与 .CSS 居中对齐

html - 图像悬停功能(css)找不到图像

html - 删除第二个框和第三个框之间的空间

wpf - 相互绑定(bind)两个 Observable 集合

javascript - 当我尝试从 CMC 获取 ETH 最后价格时,收到 "undefined"

javascript - React Routing 在本地机器上工作,但在 Heroku 上不工作