2

次のように「rowState」の値に応じてCSSバインディングを持つdivがあり、正常に動作しています。

<div id="searchResult"  data-bind="css:{disabledRow: rowState === 2}">

ここで、rowState が 2 でない場合にのみ発生するように「クリック」イベントをバインドする必要があります。次のことを試しましたが、成功しませんでした。

<div id="searchResult"  data-bind="click:{$parent.rowClicked: rowState !== 2}, css:{disabledRow: rowState === 2}">

div には繰り返しが必要なコンテンツがたくさんあるため、if ステートメントは使用したくありません。唯一の違いは、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

rowStateクリック イベント ハンドラーにChecking の値を追加できます。

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 に答える