Windows 8 如何在Win8应用程序的WinJS.Binding.Template中设置id

Windows 8 如何在Win8应用程序的WinJS.Binding.Template中设置id,windows-8,winjs,Windows 8,Winjs,以下html不适用于我 <div id="weightListViewTemplate" data-win-control="WinJS.Binding.Template"> <span data-win-bind="innerText: name; id: id"></span> </div> <div id="basicListView" style="width:420px;height:600px" data-win-opti

以下html不适用于我

<div id="weightListViewTemplate"  data-win-control="WinJS.Binding.Template">
<span  data-win-bind="innerText: name; id: id"></span>
</div>

<div id="basicListView" style="width:420px;height:600px"  data-win-options="{ itemTemplate: select('#weightListViewTemplate') }"
    data-win-control="WinJS.UI.ListView">
</div>

将显示该列表,但未在跨度对象上设置ID属性


如何根据数据源/数组中的相应值在模板中动态设置跨度的id?

我不建议使用实际id属性。我相信您不能通过数据绑定来设置它——我相信WinJS会在隐藏的元素上使用ID来允许对DOM元素的弱引用。因此,它不允许您设置ID


我建议改用其他属性或属性

Dominic是正确的-显式绑定不允许您设置id属性。如果使用绑定,则应该通过更改绑定到的数据来操作DOM,而不是在DOM中查找扩展。@ChrisTavares只是好奇,如果我们不使用
id
,有什么替代方法可以快速访问项目而不通过项目循环查找
item.someProperty===someValue
?对于DOM,这不会有任何帮助——除非使用全局id生成器,否则很容易发生名称冲突。如果您希望查找元素,则必须为querySelector添加一个类、属性或其他属性,以获得回复。@DominicHopton Thx。实际上,我想知道指定项的唯一属性是否是一个好主意。例如,
item.id=SSN
然后我可以通过
SSN
快速检索该项目。这有什么缺点吗?我从来没有发现查询选择器真的那么昂贵;尤其是从子树上。我是说,你是说这是一个紧密的循环吗?如果是这样,请在进入循环之前缓存该项并将其捕获到闭包中。不是说“不”,但我认为更多地了解实际需要可能会有所帮助