0

実際のコードをスリム化しましたが、この作業を行うことができません。インラインノックアウトテンプレートでノックアウトjsとブートストラップを使用しています。以前はdiv内にたくさんの入力を入れていましたが、配置上の理由からテーブルに変更しました。プロパティ名が正しいことはわかっており、javascript コンソールには、不適切な変数やバインドの問題に関するエラーはまったく表示されません。TBODY タグの代わりに TR タグに foreach を入れています。毎回いくつのチェックボックスがあるかわからないため、それらを正確に行にしたくないためです。1 つの TR 要素と内部の TD セルの束だけです。今のところその 1 つの TR タグ。どうすればこれを機能させることができますか??

<div id="Counties" class="well well-large checkbox inline">  
    <table class="table table-condensed">
                <tbody>
                    <tr data-bind="foreach: { data: counties
                                            }">
                        <td><input type="checkbox" data-bind="attr: { value: $data.sid }" />$data.name
                        </td>
                    </tr>
                </tbody>
            </table>
</div>

ここに私のビューモデルがあります:

function searchVm() {
    var self = this;
    self.counties = ko.observableArray([]); //array of jurisItem
}

function jurisItem(name, sid) {
    var self = this;
    self.name = name;
    self.sid = sid;
}

編集 :

また、knockoutjs のドキュメントに基づいてこれを試しましたが、機能しません。jqueryを使用して他の方法でこれを行うことができることは知っていますが、ノックアウトテンプレート構文を好むでしょう...

<table class="table table-condensed">
            <tbody>
                <tr>
                    <!-- ko foreach: $root.counties -->
                    <td>
                        <input type="checkbox" data-bind="attr: { value: $data.sid }" />$data.name
                    </td>
                    <!-- /ko -->
                </tr>
            </tbody>
        </table>
4

1 に答える 1

0

あなたが何をしようとしているのかわからない。サンプルを作ってみました。

html:

<div id="Counties" class="well well-large checkbox inline">  
    <table class="table table-condensed">
        <tbody>
            <tr data-bind="foreach: counties">
                <td>
                <input type="checkbox" data-bind="attr: { value: sid }" />
                <span data-bind="text: name" />
                </td>
            </tr>
        </tbody>
    </table>
</div>

JavaScript:

$(function () { 
    var SearchVm = function () {
        var self = this;
        self.counties = ko.observableArray([]);
    };

    var JurisItem = function (name, sid) {
        var self = this;
        self.name = name;
        self.sid = sid;
    }

    var item1 = new JurisItem("TestName1", "TestSid1");
    var item2 = new JurisItem("TestName2", "TestSid2");

    var searchViewModel = new SearchVm();
    searchViewModel.counties.push(item1);
    searchViewModel.counties.push(item2);
    ko.applyBindings(searchViewModel);

})

これはあなたのために働きますか:

http://jsfiddle.net/PVMjy/41/

于 2013-01-23T20:16:42.163 に答える