我在我的应用程序中使用 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 -->