私のビューモデルが非常に大きくなり始めたので、複数のファイルに分割することにしました。私はすでにさまざまなアプローチを試みてきましたが、何も動いていませんでした。私は複数のファイル間でプライベート関数と観測可能なパラメータにアクセスする必要がノックアウトビューモデルを複数のファイルに分割する
namespace.model = function(constructorParam) {
var self = this;
self.param1 = ko.observable(constructorParam.param1);
self.param2 = ko.observable(privateFunction(constructorParam));
self.clickEvent = function() {
// do something with params
// call some private funcitons
privateFunction2(self.param2);
};
function privateFunction(param) {
// do some stuff
}
function privateFunction2(param) {
// do some stuff
}
};
:
マイビューモデルは次のようになります。最終的なモデルは次のようになります:
// file 1
// contains constructor and param initialization + many common private helper funcitons
namespace.model = function(constructorParam) {
var self = this;
self.param1 = ko.observable(constructorParam.param1);
self.param2 = ko.observable(privateFunction(constructorParam));
function privateFunction(param) {
// do some stuff
}
function privateFunction2(param) {
// do some stuff
}
};
// file 2
// contains event hendlers
self.clickEvent = function() {
// i need to acces properties from namespace.model
self.param1
// call some private funcitons
privateFunction2(self.param2);
};
// view model initialization
ko.applyBindings(new namespace.model(initValues));
ノックアウトでこれを実現することは可能でしょうか? ありがとう
RequireJSなしでも実行できますか? –
@MajoB、はい、これはRequireJSなしで行うことができます。しかし、RequireJSのようなライブラリを使用する利点の1つは、依存関係を明示的にすることです。ここで説明するように、モデルから部品を構成する場合は非常に便利です。 – kiprainey