2

我有一个 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 不可点击。您能帮我解决这个问题吗?

4

2 回答 2

3

另一种解决方案可能是:

data-bind="click: function() { rowState() !== 2 ? alert('click ok') : return; }, css:{disabledRow: rowState === 2}"

我从 artem 拿了小提琴并将其更改为与我的解决方案一起使用。您可以在此处找到工作示例:http: //jsfiddle.net/x9CpD/15/

编辑

啊,我明白了:如果 rowState != 2,您实际上想阻止事件绑定。我认为您只能使用自定义 BindingHandler 来做到这一点

于 2012-12-20T11:50:59.847 回答
0

您可以将 checksrowState的值添​​加到 click 事件处理程序:

self.rowClicked = function(data) {
    if (data.rowState() != 2) {
        return false;
    }

    console.log("Clicked");
    // Do work
}

这是一个例子:http: //jsfiddle.net/x9CpD/1/

于 2012-12-20T11:23:30.267 回答