Javascript 如何向ko.observable写入事件?

Javascript 如何向ko.observable写入事件?,javascript,knockout.js,knockout-2.0,Javascript,Knockout.js,Knockout 2.0,我使用敲出为我的绑定目的,我在一个共享模块的工作。基本上,有两个链接,它们基本上都用不同的值调用相同的函数。例如,当您单击Facebook时,所有值为“Facebook”的服务将被调用;当您单击Twitter时,将调用值为“Twitter”的函数。但是基本上调用相同的函数。现在并没有办法从HTMl中指定参数,因为我所能做的就是像data bind=“click:Share”这样的操作。在这里我们可以看到,我不能在这里指定任何参数 现在我可以在我的js文件中创建一个ko.observable,这个

我使用敲出为我的绑定目的,我在一个共享模块的工作。基本上,有两个链接,它们基本上都用不同的值调用相同的函数。例如,当您单击Facebook时,所有值为“Facebook”的服务将被调用;当您单击Twitter时,将调用值为“Twitter”的函数。但是基本上调用相同的函数。现在并没有办法从HTMl中指定参数,因为我所能做的就是像data bind=“click:Share”这样的操作。在这里我们可以看到,我不能在这里指定任何参数


现在我可以在我的js文件中创建一个ko.observable,这个函数将把它作为参数。。。但我需要一种方法,当点击不同的链接时,可以从html点击事件中观察到。知道如何做吗?

Knockout将当前上下文传递给数据绑定中使用的任何函数。这意味着,如果您调用
单击:share
,它将传入您绑定的服务,但我会在这里输入代码,因为它非常基本

对于更复杂的绑定,您的对象可能会有一个
名称
属性,您可以使用该属性代替
$data
,也可以在
共享()
函数中使用

HTML:


这很难理解。如果我的回答没有涵盖你的问题,请编辑你的问题以使其清晰(或者添加一些代码)。我完全明白你的意思。因此,基本上,我必须为我的所有链接提供一个上下文,在您的示例中,data[]成为该上下文。所以我想我的解决方案在于使用数据数组。我正在使用所有不同的链接,这些链接彼此没有关系,而在您的案例中,您正在使用模板生成链接,并确保它们都来自同一来源,并且您可以关联它们。谢谢。@Californicated,数据数组就是一个例子,用于代替应用程序的数据源。在
点击
上下文中,数组中的项目是上下文,而不是整个
数据
数组。有很多方法可以实现这个功能,而不必将链接绑定在一起,但我会避开它们。淘汰赛试图让你进入MVVM模式,使用它会让你的生活更轻松。
<ul data-bind="foreach: services">
    <li data-bind="text: $data, click: $parent.share" />
</ul>​
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));​