上下文
我一直在摆弄并试图创建我自己的(只是另一个)SPA框架。在这个框架中,我一直在尝试创建一个自定义组件加载器,以便能够在我加载的viewModel上进行依赖注入。
使用KnockoutJS版本:3.3.0
问题
加载组件时,自定义组件加载器上的loadViewModel
函数不会执行。
参考代码(see file):
injector(function (ko) {
ko.components.loaders.unshift({
getConfig: function (name, callback) {
var parts = name.split("/");
callback({
require: "components/" + name + "/" + parts[parts.length - 1]
});
},
loadViewModel: function (name, viewModelConfig, callback) {
console.log(arguments);
callback(null);
}
});
});
请注意,injector
函数只是我编写的一些自定义依赖项解析器。 (几乎像对AMD组件的define
或require
调用。)
getConfig
函数无论如何都会正确执行。
有关我的涂鸦的完整概述,see this git repo
答案 0 :(得分:1)
如果你没有"覆盖" loadComponent
方法将调用默认的组件加载器loadComponent
,如果您提供了loadViewModel
配置选项,则只会调用viewModel
。< / p>
在getConfig
方法中,您返回的配置为require
,这意味着您的require.js模块必须提供必要的viewModel
配置选项。
但是在viewModel.js
viewModel: func.apply(this.models[identifier], arguments)
没有设置viewModel
属性undefined