【发布时间】:2013-02-16 04:59:33
【问题描述】:
我正在使用 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>
绑定后,我想:
- 根据
allow_action和action_type的值更改a.action的className。 - 根据绑定数据的内容,在绑定时将事件 (
addEventListener) 附加到a.action。这包括allow_action、action_type和其他值。
基本上,我希望有一个绑定前或绑定后的回调函数,将元素和绑定数据作为参数。转换器似乎无法做到这一点,因为转换器不允许您访问其他字段。
与此同时,我在 render 之后使用 DOM 手动处理这些事情。我想知道是否有更好的选择。谢谢。
更新
根据 cmets 中的 @GotDibbs 和 @RSW 的建议,我设法使用来自 Sending multiple parameters to WinJS.Binding.converter() function 的解决方案解决了问题 #1。我想知道#2 是否仍然可行?
【问题讨论】:
-
如果您将某些东西绑定到
this而不是特定属性,您可以从转换器访问您的整个模型。此外,我知道没有预绑定或绑定后回调函数缺少从 WinJS.Binding.processAll() 返回的承诺。您可能需要考虑在要绑定的对象上设置 CSS 类名称和事件处理程序。 -
你能给我一个关于这种转换器的例子吗?
-
他在这里举了一个绑定到“this”的例子:stackoverflow.com/a/14715804/1309005
-
@RSW,非常感谢。我设法从 stackoverflow.com/questions/14713927/… 在我自己的项目中获得解决方案。
-
我不在一台能够尝试这个的计算机上,但是你不能为你想要处理的事件设置一个绑定,再次使用
this将它绑定到你的模型,并使用转换器将其重定向到您要使用的实际处理程序?
标签: javascript html windows-8 winjs