2

我正在使用 HTML5/Javascript 开发 Windows 8 应用程序。我创建了一个自定义控件,它使用一堆 DIV 来显示内容,每个 DIV 都使用WinJS.Binding.Template. 设置接近这个问题的答案:WinJS.UI.ListView 自定义列表项内容?.

绑定数据接近:

[
    {
        "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>

绑定后,我想:

  1. 根据 和 的值更改className的。a.actionallow_actionaction_type
  2. 根据绑定数据的内容,在绑定时附加一个事件 ( addEventListener) 。a.action这包括allow_action,action_type和其他值。

基本上,我希望有一个绑定前或绑定后的回调函数,将元素和绑定数据作为参数。转换器似乎无法做到这一点,因为转换器不允许您访问其他字段。

同时,我在render. 我想知道是否有更好的选择。谢谢你。

更新

正如@GotDibbs 和@RSW 在评论中所建议的那样,我设法使用Sending multiple parameters to WinJS.Binding.converter() function中的解决方案解决了问题#1 。我想知道#2是否仍然可能?

4

1 回答 1

3

您应该能够通过将所需元素上的 event 和 className 属性绑定到您的模型来实现您正在寻找的东西,就像评论中提到的先前答案一样。因此,假设您要绑定点击事件,您的锚标记看起来更像这样:

...
<a data-win-bind="className: this Converters.getItemClassName; onclick: this Converters.getItemClickHandler">Action</a>
...
于 2013-02-19T04:57:35.603 回答