アプリでKnockout、Require、knockout-amd-helpersを使用しています。
何度も呼び出される関数内でモデルを動的にロードしたいのですがKnockout initialize
、モデルがわからないため、すべてのモデルを一度にロードするよりも動的にロードする方が効率的であると考えました。以下のコードを参照してください。
ko.utils.extend(ModelA.prototype.initialize = function(data, parent) {
...
require(['model/Pretag' + ko.unwrap( data.code )], function(Role){
roleInstance = new Role(parent);
roleInstance.initialize(data.properties);
....
self.roleObservable( roleInstance );
}
...
})
問題: このアプローチでは、多くの場合、テンプレートのインライン JS コードから競合状態が発生します。これは、roleInstance.initialize(data.properties);
初期化がまだ完了していないためです。
require([..],function(){})
テンプレートがインラインJS呼び出しの実行を開始する前に、複数のロードを非同期に強制する方法はありますか?
更新: テンプレート内のインライン JS コードは次のとおりです。
<li>Type: (<span data-bind="text: getObject('CODE').getProperties().STATIC_TYPE"></span>)</li>
初期化がまだ完了していgetObject('CODE').getProperties()
ないため未定義であるため、これはエラーをスローしますgetObject('CODE')
このリストは、以下のインライン ko テンプレートに含まれています。
<!-- ko template: { name: 'template_contains_problem_inline_JS', foreach: people } --><!-- /ko -->