淘汰赛,为什么我的功能不会触发点击事件?

时间:2014-08-04 06:55:42

标签: javascript knockout.js

HTML:

<div data-bind='click: registerClick'>
  <img src="image.png" width="450px" />
</div>
<div data-bind='visible: content'>
  content
</div>

使用Javascript:

this.content = ko.observable(false);

//Named function triggers at the start 
//(after pressing f5, and doesn't trigger when I click the image)
this.registerTClick = toggleContent(this.content);

//unamed function only triggers at the clickevent.
this.registerClick = function () {
if (this.content() == false) {
  this.content(true);
}};

我想让第一个表现得像第二个。

1 个答案:

答案 0 :(得分:2)

toggleContent(this.content)会立即执行您的toggleContent函数,如果它没有返回function,那么它会破坏点击绑定。

因此,您需要将registerTClick设置为函数引用或返回函数引用的内容。

在您的情况下,您可以使用bind methodtoggleContent创建一个新函数,该函数在被调用时会收到this.content

this.registerTClick = toggleContent.bind(this, this.content);

演示JSFiddle