【发布时间】:2018-08-04 21:36:03
【问题描述】:
我想将一些事件绑定到一个元素,使用淘汰赛“事件”绑定 但我希望所有列出的事件仅与特定案例绑定。
视图模型:
function vm(){
var self = this;
self.isEditMode = ko.observable(false);//can be changed to true
self.events = ko.observable({
down: function () {
console.log("down")
},
up: function () {
console.log("up")
},
hover: function () {
console.log("hover")
}
});
}
和 Html:
<div style="border:1px solid red;width:50px;height:50px"
data-bind="event:{mousedown:events().down,mouseup:events().up,mouseover:events().hover}:null"></div>
<button data-bind="click:function(){isEditMode(!isEditMode())}">change </button>
我试过了:
<div data-bind="event:isEditMode()?{mousedown:events().down,mouseup:events().up,mouseover:events().hover}:null"></div>
但它对我不起作用。
我认为最好的方法是使用自定义绑定处理程序,但我不知道如何。
非常感谢您的帮助!
【问题讨论】:
-
首先它在没有 isEditMode() 条件的情况下工作吗?
-
我刚刚检查了您的代码及其在 isEditMode 为 false 时的工作情况。您面临的问题是什么?
-
是的,它可以在没有 isEditMode() 条件的情况下工作。它甚至适用于 isEditMode() 条件,当它设置为 true 时,但如果设置为 false (通过单击我最近添加到上面的按钮) - 我得到一个 ko 错误。
-
你得到的错误是什么?
-
鼠标悬停div时发生
标签: mvvm knockout.js