0

最初の列にチェックボックスがあるhtmlテーブルがあります。ノックアウトでチェックボックスがチェックされている行を強調表示したいと思います。

<table class="defaultGrid">
<thead>
    <tr>
        <th>Check</th>
        <th>ID</th>
        <th>Name</th>
    </tr>
</thead>
<tbody data-bind="foreach: model.Things">
    <tr>
        <td><input type="checkbox" data-bind="click: $root.selectThing " /></td>
        <td data-bind="text: ID"></td>
        <td data-bind="text: Name"></td>
    </tr>
</tbody>
</table>

jsFiddle の例を次に示します: http://jsfiddle.net/jJ4H6/1/

進め方がわかりません。モデルに「isSelected」のような余分なプロパティを追加したくありません。

何か案が?

ありがとう。

4

2 に答える 2

1

私は間違いなく、あなたのtr要素が黄色の背景を持っているかどうかを決定するあなたの「Thing」に観察可能なノックアウトを追加します。

ただし、ビューモデルにこのようなものを本当に追加したくない場合は、これを処理するためにselectThing関数にロジックを追加する必要があります。

self.selectThing = function(item, event) {
        $(event.target).parent().parent().addClass('selected');
   }; 
于 2013-03-20T18:12:38.477 に答える
1

このJfiddle http://jsfiddle.net/jJ4H6/27/をチェックしてください

 $(function() {
Thing = function(id, name, selected) {
    var self = this;
    self.ID = id, 
    self.Name = name
    self.isChecked = ko.observable(false);
};

function viewModel() {
    var self = this;
    self.model = {};
    self.model.CurrentDisplayThing = ko.observable();
    self.model.Things = ko.observableArray(
        [
            new Thing(1, "Thing 1"),
            new Thing(2, "Thing 2"),
            new Thing(3, "Thing 3")
        ]);
    self.selectThing = function(item) {

    };
}
ko.applyBindings(new viewModel());

});

于 2013-03-20T18:16:35.980 に答える