在KnockoutJS中绑定Click事件

时间:2012-12-20 11:01:49

标签: knockout.js

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

2 个答案:

答案 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/