3

ビュー モデルがかなり大きくなったので、別のファイルに分割したいと考えています。使用したい構造は次のとおりです。

 |- knockout-2.2.0.debug.js
 |- require.js
 |- /App
    |- Property.js
    |- /Property
       |- Fields.js
       |- Model.js
       |- ViewModel.js

今私のProperty.jsファイル内に私は持っています:

require.config({
    paths: {
        ko: "../knockout-2.2.0.debug"
    },
    baseUrl: "/Scripts/App"
})

require(['ko', 'Property/ViewModel'], function (ko, viewModel) {
    var view = new viewModel.PropertyViewModel();
    console.log(view);
    ko.applyBindings(view);

})

Model.js

define(['ko'], function(ko) {

    return {
        PropertyModel: function(id, name, note) {
            var s = this;
            s.Id = ko.observable(id);
            s.Name = ko.observable(name);
            s.Note = ko.observable(note);
        }
    };
});

ViewModel内にこれがある場合、ここで行き詰まります:

define(['ko', 'Property/Model', 'Property/Field'], function(ko, model, field) {
    return {
        PropertyViewModel: function () {
            var self = this;

            self.Property = ko.observable(new model.PropertyModel("123", "Test", "note"));
        }
    };
});

それは完璧に機能しますが、使用するフィールド ( など) を別のファイルに移動したいself.Propertyので、Field.Js ファイルには次のように記述します。

define(['ko'], function(ko) {
    return {
        Property: ko.observable()
    };
});

次の行を更新します。

self.Property = ko.observable(new model.PropertyModel("123", "Test", "note"));

field.Property(new model.PropertyModel("123", "Test", "Note"))

ビューモデルをconsole.logにしようとすると、空になります。これは、移動してViewModelに挿入できないものですか? そうでない場合、なぜですか?

4

1 に答える 1