我正在使用敲出来进行绑定,我正在开发一个共享模块。基本上,有几个链接,它们基本上只是用不同的值调用相同的函数。例如,当您点击Facebook然后所有具有值“Facebook”的服务以及当您点击Twitter时,然后使用值“Twitter”调用该函数。但基本上调用相同的功能。既然没有办法从HTMl中指定参数,因为我能做的就像data-bind =“click:Share”。在这里,我们可以看到我不能在这里指定任何参数。
现在我可以在我的js文件中创建一个ko.observable,这个函数将作为一个参数......但是当我点击不同的链接时,我需要一种方法来编写来自html click事件的observable。关于如何做的任何想法?
答案 0 :(得分:1)
Knockout将当前上下文传递给数据绑定中使用的任何函数。这意味着如果您致电click: share
,它将传递您已绑定的服务。 Here is a fiddle demonstrating this,但我会在这里输入代码,因为它很基本。
对于更复杂的绑定,您的对象可能会有name
属性,您可以使用该属性代替$data
,以及在share()
函数中使用。
HTML:
<ul data-bind="foreach: services">
<li data-bind="text: $data, click: $parent.share" />
</ul>
使用Javascript:
data = [
"Facebook",
"Twitter",
"Flickr",
"SomeOtherWeb2.0 Service"
];
var ViewModel = function(data) {
this.services = ko.observableArray(data);
this.share = function(service){
alert("You Clicked on: " + service);
};
};
ko.applyBindings(new ViewModel(data));