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 组件的 definerequire 调用。)

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