0

公開モジュールパターンを使用しているときに、データバインディングをKnockoutで機能させるのに問題があります。

私のJavaScriptはこんな感じです

var HMS = HMS || {};

$(function () {

    HMS.PatientModel = function () {
        this.Patient_Name = ko.observable();
        this.Patient_Address = ko.observable();
    };

    HMS.PatientViewModel = function () {
        var patient = ko.observable(),
        loadPatient = function () {
            patient = new HMS.PatientModel();
            patient.Patient_Name("Premkumar");
        };
        return {
            patient: patient,
            loadPatient: loadPatient
        };
    } ();

    HMS.PatientViewModel.loadPatient();
    ko.applyBindings(HMS.PatientViewModel);

});

患者名で正しく機能するようにデータバインディングを取得できません。HTMLのdivタグには。がありdata-bind="text:patient.Patient_Name"ます。

jsFiddlehttp : //jsfiddle.net/stprem/pp9ym/1/のコードを参照してください。データバインディングで私が間違っていることを教えていただければ幸いです。

4

1 に答える 1

4

loadPatient関数では、変数を新しいオブジェクトに置き換えていますpatientが、モジュールはすでに元のオブザーバブルへの参照を返しています。したがって、この方法で更新しても、オブジェクトが返したものは更新されません。

オプションは次のとおりです:http://jsfiddle.net/rniemeyer/pp9ym/6/

基本的に、監視可能として保持patientしてから、関数で更新しますloadPatient。あなたの見解では、withバインディングを使用すると、を呼び出した後にオブジェクトをロードしたい場合に備えて、オブジェクトがnullになるのを防ぐのに役立ちますko.applyBindings

于 2012-08-16T11:57:46.773 に答える