Javascript WinJS数据绑定:类和事件绑定
首先,在标记中使用data win bind属性时,是否有可以设置的属性列表 我希望做几件事:Javascript WinJS数据绑定:类和事件绑定,javascript,data-binding,winjs,Javascript,Data Binding,Winjs,首先,在标记中使用data win bind属性时,是否有可以设置的属性列表 我希望做几件事: 基于数据源有条件地附加类名 在标记中声明事件侦听器。希望这些事件侦听器存在于数据源上,而不是某些全局函数上 您可以通过数据绑定在元素上设置任何javascript属性。因此,可以设置作为javascript属性公开的任何内容(基本上,除了aria-attributes之外的所有内容) 附加类名有点棘手,因为您可以设置classname属性,但不能使用绑定将其附加。但是,可以在单个字符串中包含所有类名
您可以通过数据绑定在元素上设置任何javascript属性。因此,可以设置作为javascript属性公开的任何内容(基本上,除了aria-attributes之外的所有内容) 附加类名有点棘手,因为您可以设置classname属性,但不能使用绑定将其附加。但是,可以在单个字符串中包含所有类名
我们有一些代码,可以随时设置例如onclick属性。将函数作为数据源的一部分包含进来,您就可以设置了。您可以绑定到两组属性 第一个是DOM中每个元素类型支持的属性。因此,例如,对于
img
元素,可以绑定src
属性来设置显示的图像。对于输入
元素,可以绑定到值
属性。您可以看到适用于Metro应用程序的HTML元素的完整列表
如果已将WinJS UI控件应用于元素,则第二组属性可用(这通常是通过数据win control
属性完成的。您可以通过应用控件时添加的winControl
属性设置每个控件定义的属性。例如,如果您想在列表视图中绑定itemTemplate
属性,您可以使用如下标记:
<div id="list" data-win-control="WinJS.UI.ListView"
data-win-bind="winControl.itemTemplate: myValue"></div>
var dataSource = {
myClickHandler: function (e) { console.log("Click!") }
}
var dataSource = {
myClickHandler: function (e) { console.log("Click") },
classes: WinJS.Binding.as({
myFirstClass: true,
mySecondClass: false,
})
}
然后绑定到与您感兴趣的事件对应的*
属性上的:
<button data-win-bind="onclick: myClickHandler">Press Me</button>
然后在可观察对象上使用bind方法在值更改时获取通知,并应用/删除类,如下所示:
dataSource.classes.bind("myFirstClass", function (newValue) {
var elem = document.getElementById("myId");
if (newValue) {
WinJS.Utilities.addClass(elem, "myFirstClass");
} else {
WinJS.Utilities.removeClass(elem, "myFirstClass");
}
});
您可以声明性地绑定类,但需要一次性设置所有类,这很少有用。如果您想采用这种方法,那么可以绑定元素上的className
属性