Загрузчик пользовательских компонентов KnockoutJS не выполняет `loadViewModel`
контекст
Я возился и пытался создать свою собственную (просто другую) структуру SPA. В этом фреймворке я пытался создать собственный загрузчик компонентов, чтобы иметь возможность делать некоторые инъекции зависимостей и вещей в модели представления, которые я загружаю.
Используемая версия KnockoutJS: 3.3.0
проблема
loadViewModel
функция в загрузчике пользовательских компонентов не выполняется при загрузке компонента.
Код для справки ( см. Файл):
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
функция - это просто какой-то пользовательский преобразователь зависимостей, который я написал. (Почти как define
или же require
позвоните по компонентам AMD.)
getConfig
Функция выполняется должным образом.
Для полного обзора моего doodling, см. Этот репозиторий git
1 ответ
Если вы не переопределите loadComponent
метод, то загрузчик компонента по умолчанию loadComponent
будет вызван, который только вызывает loadViewModel
если вы предоставили viewModel
опция конфигурации.
В вашем getConfig
метод вы возвращаете конфиг с require
Это означает, что ваш модуль require.js должен предоставить необходимые viewModel
опция конфигурации.
Однако в вашем viewModel.js
viewModel: func.apply(this.models[identifier], arguments)
не правильно установить viewModel
собственность, которая осталась undefined