我有一个div,它根据'rowState'的值有一个css绑定,如下所示,工作正常。
<div id="searchResult" data-bind="css:{disabledRow: rowState === 2}">
现在,我需要将'click'事件绑定到仅当rowState不是2时触发。我尝试了以下操作,但没有成功。
<div id="searchResult" data-bind="click:{$parent.rowClicked: rowState !== 2}, css:{disabledRow: rowState === 2}">
我不想使用if语句,因为div有很多内容我需要重复。唯一的区别是如果rowState为2,则div不可单击。 你可以帮我解决这个问题吗?
答案 0 :(得分:3)
另一个解决方案可能是:
data-bind="click: function() { rowState() !== 2 ? alert('click ok') : return; }, css:{disabledRow: rowState === 2}"
我从artem中取出了小提琴并将其更改为与我的解决方案一起使用。您可以在此处找到工作示例:http://jsfiddle.net/x9CpD/15/
修改强>
啊,我明白了:你实际上想要预先设置事件绑定,如果是rowState!= 2.我认为你只能用自定义的BindingHandler来做这个
答案 1 :(得分:0)
您可以将检查rowState
的值添加到点击事件处理程序:
self.rowClicked = function(data) {
if (data.rowState() != 2) {
return false;
}
console.log("Clicked");
// Do work
}
以下是一个示例:http://jsfiddle.net/x9CpD/1/