1

ノックアウト inbuild WITH Binding を使用して単純化した動作を実行しようとしています。ko.applyBinding を使用して ViewModel にバインドされた UL-LI リストがあります。正常に動作しています。現在、リストを使用して選択項目の動作を実装しようとしています。このように、ViewModel 内に selectPatient 動作を実装し、Click を使用して LI タグにバインドします。メソッドが呼び出され、監視可能な selectedPatient 変数が設定されます。

現在、UL-LI の同じレベルで親 div 内に div があり、With を使用して selectedPatient とバインドしようとしています。動作していません。

参照用コード:

<div data-role="content" id="MyPatientDiv">
        <div>
            <ul data-bind="foreach:Patients">
                            <li data-bind="click:$root.selectPatient">
                                <table>
                                    <tr>
                                        <td>
                                            <a href="javascript:" id="pName" sortorder="none"><span data-bind="text:LastName"></span>
                                                ,<span data-bind="text:$data.FirstName"></span></a>
                                        </td>
                                        <td>
                                            <a href="javascript:" id="pid" sortorder="none"><span data-bind="text:$data.DisplayId">
                                            </span></a>
                                        </td>
                                        <td>
                                            <a href="javascript:" id="pLocation" sortorder="none"><span data-bind="text:$data.UnitName">
                                            </span></a>
                                        </td>
                                    </tr>
                                </table>
                            </li>
            </ul>
        </div>
        <div id="dlgAction" databind="with:selectedPatient">
            What would you like to do for <span databind="text:$data.LastName"></span>,<span databind="text:$data.FirstName"></span>
        </div>
    </div>​

スクリプト コード:

function PatientsModel(data) {
    var self = this;

    self.Patients = ko.observableArray([]);

    if (data.patientEncounters == null) self.Patients([]);
    else self.Patients(data);

    self.selectedPatient = ko.observable(null);

    self.selectPatient = function(data, target) {
        self.selectedPatient(data);

        //$('#dlgAction').dialog('open');
    };
}

MyPatientList = {
    PatientsModel: null,
    DOMElementId: 'MyPatientDiv'
}

$(function(){
    var data = [{
        AccountId: null,
        AdmissionStatus: 1
        AttendingPhysicians: null,
        BedId: null,
        DisplayId: "32456",
        EncounterKey: "00000000000000000000000000000003",
        FirstName: "John",
        Gender: null,
        LastName: "Rambo",
        LocalPatient: true,
        MiddleName: null,
        MyPatient: true,
        PatientId: null,
        PatientKey: "00000000000000000000000000000003",
        RoomName: null,
        SameName: false,
        TemporaryPatient: false,
        UnitName: "IC1",
        VisitId: null}];

        data[0].LastName;

    MyPatientList.PatientsModel = new PatientsModel(data);
    ko.applyBindings(MyPatientList.PatientsModel, $('#MyPatientDiv')[0]);
});

私は何か間違ったことをしていますか?

よろしくスメット

4

1 に答える 1

2

data-bindキーワードのダッシュがありません:

<div id="dlgAction" data-bind="with:selectedPatient">
    What would you like to do for <span data-bind="text:$data.LastName"></span>,
    <span data-bind="text:$data.FirstName"></span>
</div>

また、 $data をdata-bind属性に入れる必要はなく、プロパティ名を指定するだけです:

<div id="dlgAction" data-bind="with:selectedPatient">
    What would you like to do for <span data-bind="text: LastName"></span>,
    <span data-bind="text: FirstName"></span>
</div>

編集:それは私のために働きます。ここにフィドルがあります:http://jsfiddle.net/vyshniakov/BjeP9/

AdmissionStatusデータに誤りがありました -プロパティの後にコマを逃しました。data.patientEncountersまた、常に nullを読み込もうとしたため、コレクションが初期化されませんでした。

于 2012-11-20T10:27:30.420 に答える