KnockoutJS 自定义组件加载器不执行 `loadViewModel`
KnockoutJS custom component loader not executing `loadViewModel`
上下文
我一直在摆弄并尝试创建我自己的(只是另一个)SPA 框架。在这个框架中,我一直在尝试创建一个自定义组件加载器,以便能够对我正在加载的 viewModels 进行一些依赖注入。
使用的 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
如果您不 "override" loadComponent
方法,那么默认组件加载器的 loadComponent
将被调用,如果您提供了 loadViewModel
viewModel
配置选项。
在您的 getConfig
方法中,您将返回带有 require
的配置,这意味着您的 require.js 模块必须提供必要的 viewModel
配置选项。
但是在你的 viewModel.js
viewModel: func.apply(this.models[identifier], arguments)
没有正确设置 viewModel
属性 仍然是 undefined
上下文
我一直在摆弄并尝试创建我自己的(只是另一个)SPA 框架。在这个框架中,我一直在尝试创建一个自定义组件加载器,以便能够对我正在加载的 viewModels 进行一些依赖注入。
使用的 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
如果您不 "override" loadComponent
方法,那么默认组件加载器的 loadComponent
将被调用,如果您提供了 loadViewModel
viewModel
配置选项。
在您的 getConfig
方法中,您将返回带有 require
的配置,这意味着您的 require.js 模块必须提供必要的 viewModel
配置选项。
但是在你的 viewModel.js
viewModel: func.apply(this.models[identifier], arguments)
没有正确设置 viewModel
属性 仍然是 undefined