我正在使用HTML5 / Javascript开发Windows 8应用程序。我创建了一个自定义控件,它使用一堆DIV来显示内容,每个DIV都使用WinJS.Binding.Template
进行渲染。设置接近这个问题的答案:WinJS.UI.ListView customize list item content?。
绑定数据接近:
[
{
"title": "title name",
"allow_action": false
"action_type": "go"
},
...
]
我的模板接近:
<div id="entry" data-win-control="WinJS.Binding.Template">
<div data-win-bind="textContent: title">
</div>
<a class="action">Action</a>
</div>
绑定后,我想:
className
和a.action
的值更改allow_action
的{{1}}。action_type
)附加到addEventListener
。其中包括a.action
,allow_action
和其他值。基本上,我希望有一个带有元素的预绑定或后绑定回调函数,并将数据绑定为参数。转换器似乎无法实现这一点,因为转换器不允许您访问其他字段。
同时我在action_type
之后用DOM手动处理这些事情。我想知道是否有更好的选择。谢谢。
更新
正如@GotDibbs和@RSW在评论中所建议的那样,我设法使用来自Sending multiple parameters to WinJS.Binding.converter() function的解决方案来解决问题#1。我想知道#2是否仍有可能?
答案 0 :(得分:3)
您应该能够通过将所需元素上的event和className属性绑定到模型来实现您所需要的功能,就像使用注释中提到的previous answer一样。因此,假设您要绑定click事件,您的锚标记看起来更像是这样:
...
<a data-win-bind="className: this Converters.getItemClassName; onclick: this Converters.getItemClickHandler">Action</a>
...