0

アプリで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 -->
4

0 に答える 0