ビュー モデルがかなり大きくなったので、別のファイルに分割したいと考えています。使用したい構造は次のとおりです。
|- 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に挿入できないものですか? そうでない場合、なぜですか?