javascript - 使用代码中的模板实例化 WinJS.UI.ListView 时出错

标签 javascript windows-8 windows-8.1 winjs

在创建包含 WinJS.UI.ListView 的自定义 WinJS 控件的过程中,我试图允许用户传递模板的选择器。

但是,无论我是否像您期望的那样在 HTML 页面中“预先创建”了模板:

<div data-win-control="WinJS.Binding.Template"> <!-- ... --> </div>

如果我查询元素并从如下代码创建模板,也不会:

var template = new WinJS.Binding.Template(document.querySelector(selector));

当我开始实例化 ListView 并将模板元素本身(或其 winControl 属性)传递给 ListView 的 itemTemplate 选项时,如下所示:

new WinJS.UI.ListView(elem,  { itemTemplate: template.winControl });

我收到以下错误:

Exception is about to be caught by JavaScript library code at line 11562, column 21 in ms-appx://microsoft.winjs.2.0/js/base.js

0x800a01b6 - JavaScript runtime error: Object doesn't support property or method '_renderItemImpl'

我试图追溯它,但在 base.js 中迷失了方向。希望其他人也遇到过这种情况。

注意:我已将我的解决方法作为答案包含在内。

最佳答案

我能够开始工作的唯一解决方法是在代码中实例化模板,然后在实例化 ListView 时将函数传递给 itemTemplate 选项。关于这里预期内容的文档很少,但是通过代码实例化 ListView 的所有演示都使用模板函数,因此我认为这是实现这一目标的唯一方法。

new WinJS.UI.ListView(elem,  {
    itemTemplate: function (promise) {
        return promise.then(function (item) {
            return resultsTemplate.render(item.data);
        });
    }
});

关于javascript - 使用代码中的模板实例化 WinJS.UI.ListView 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28910844/

相关文章:

windows-8 - 有没有办法查看 Windows 8 设备是否连接了物理键盘?

java - "unable to find valid certification path to requested target",但是浏览器说没问题

javascript - 将自己的值设置为 ng-options 并检查第一个

javascript - Windows 8 Javascript 应用程序 XML 对象

javascript - Ace编辑器如何设置源码路径

c++ - 进程内通信 WinRT(消息替换)

javascript - 为什么这个 javascript 不能在 Windows 8 上运行。1's IE11? (It works on the latest version of Firefox, Chrome, even Windows 7' s IE11)

javascript - Windows 8应用商店中应用的javascript/html的安全性

javascript - Angular2 SharedService 默认传递 ID 但可以更改

javascript - ssh2 Node js sftp协议(protocol)错误握手失败