数据绑定问题与淘汰和揭示模块模式

时间:2012-08-16 11:19:10

标签: javascript knockout.js

在使用显示模块模式时,我无法使用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"

请参阅jsFiddle http://jsfiddle.net/stprem/pp9ym/1/中的代码。如果您能告诉我数据绑定中的错误,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

loadPatient函数中,您正在用新对象替换patient变量,但您的模块已经返回了对原始observable的引用。因此,以这种方式更新它不会更新对象返回的内容。

以下是一个选项:http://jsfiddle.net/rniemeyer/pp9ym/6/

基本上,您将patient保留为可观察对象,然后在loadPatient函数中更新它。在您的视图中,使用with绑定可以帮助您防止对象为空,以防您在调用ko.applyBindings后加载它。