0

我正在使用敲除来进行绑定,并且正在开发共享模块。基本上,有几个链接,它们基本上都使用不同的值调用相同的函数。例如,当您单击 Facebook 时,所有服务的值为“Facebook”,而当您单击 Twitter 时,则调用值为“Twitter”的函数。但基本上调用相同的函数。现在没有办法从 HTMl 指定参数,因为我所能做的就是 data-bind="click: Share" 之类的。在这里我们可以看到我不能在这里指定任何参数。

现在我可以在我的 js 文件中创建一个 ko.observable ,这个函数将作为参数......但是当点击不同的链接时,我需要一种方法来从 html 点击事件中写入该 observable 。关于如何做的任何想法?

4

1 回答 1

1

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

对于更复杂的绑定,您的对象可能有一个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));​
于 2012-06-20T19:44:08.920 回答