WinJS,用于脚本控制绑定的data-win-bind?

时间:2013-02-16 04:59:33

标签: javascript html5 windows-8 winjs

我正在使用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>

绑定后,我想:

  1. 根据classNamea.action的值更改allow_action的{​​{1}}。
  2. 根据绑定数据的内容,在绑定时将事件(action_type)附加到addEventListener。其中包括a.actionallow_action和其他值。
  3. 基本上,我希望有一个带有元素的预绑定或后绑定回调函数,并将数据绑定为参数。转换器似乎无法实现这一点,因为转换器不允许您访问其他字段。

    同时我在action_type之后用DOM手动处理这些事情。我想知道是否有更好的选择。谢谢。

    更新

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

1 个答案:

答案 0 :(得分:3)

您应该能够通过将所需元素上的event和className属性绑定到模型来实现您所需要的功能,就像使用注释中提到的previous answer一样。因此,假设您要绑定click事件,您的锚标记看起来更像是这样:

...
<a data-win-bind="className: this Converters.getItemClassName; onclick: this Converters.getItemClickHandler">Action</a>
...