我正在使用 HTML5/Javascript 开发 Windows 8 应用程序。我创建了一个自定义控件,它使用一堆 DIV 来显示内容,并且每个 DIV 都使用 WinJS.Binding.Template
呈现。该设置接近这个问题的答案:WinJS.UI.ListView customize list item content? .
绑定(bind)数据接近:
[
{
"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>
绑定(bind)后,我想:
- 根据
allow_action
和action_type
的值更改a.action
的className
。 - 根据绑定(bind)数据的内容,在绑定(bind)时将事件 (
addEventListener
) 附加到a.action
。这包括allow_action
、action_type
和其他值。
基本上,我希望有一个预绑定(bind)或后绑定(bind)回调函数,以元素和绑定(bind)数据作为参数。这对于转换器来说似乎是不可能的,因为转换器不允许您访问其他字段。
同时,我在渲染
之后使用 DOM 手动处理这些内容。我想知道是否有更好的选择。谢谢。
更新
根据@GotDibbs和@RSW在评论中的建议,我设法使用Sending multiple parameters to WinJS.Binding.converter() function中的解决方案解决了问题#1。 。我想知道#2 是否仍然可能?
最佳答案
您应该能够通过将所需元素上的事件和 className 属性绑定(bind)到您的模型来实现您正在寻找的内容,就像 previous answer 一样。评论中提到。因此,假设您想绑定(bind)点击事件,您的 anchor 标记将看起来更像这样:
...
<a data-win-bind="className: this Converters.getItemClassName; onclick: this Converters.getItemClickHandler">Action</a>
...
关于javascript - WinJS、data-win-bind 用于脚本控制绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14907125/