knockout click事件仅在初始化时触发

MrF*_*Fox 1 events html5 knockout.js

我想要一个可点击的div来切换我的底层细节视图的可见性.

<div class="header" data-bind="click: Details(!Details())">
...
</div>
<div data-bind="visible: Details()"></div>
Run Code Online (Sandbox Code Playgroud)

详细信息存储在我的挖空模型中,默认值为false.当我添加此部分时,函数被调用并且细节变得可见.然后div可以点击(悬停时不同的鼠标指针)但是淘汰模型中的值不再被更改.

任何想法为什么会这样?

nem*_*esv 5

click绑定采用函数引用,因此您需要将处理程序包装到匿名函数中:

<div class="header" data-bind="click: function() { Details(!Details()) }">
Run Code Online (Sandbox Code Playgroud)

在当前代码中,Details(!Details())当初始化biding并且Details(...)未定义的返回值被指定为处理程序时执行获取,这就是为什么它在之后不起作用的原因.

另请参阅单击绑定文档:访问事件对象或传递更多参数部分.