Я уверен, что у меня отсутствует что-то совершенно очевидное здесь, но я впервые пробовал ES6, и через пять дней после того, как я стал нигде, я решил, что откройте это сообщество.Компонент нокаута не привязывающий вид модели (ES6)
У меня есть вид модели класс:
class TestViewModel
{
constructor(params)
{
this.firstName = ko.observable(params.firstName);
this.message = ko.computed(function() { return 'Hello, ' + this.firstName() + '!' }, this);
}
}
export default { viewModel: TestViewModel, template: templateMarkup };
(Ignore шаблон, это просто тэг абзаца, используя импорт)
Тогда есть точка входа:
"use strict";
import $ from 'jquery';
import ko from 'knockout';
import comp from '../test-model/test-model';
ko.components.register("test-model", {
viewModel: comp.viewModel,
template: comp.template
});
let m = new comp.viewModel({ firstName: "world" });
$("document").ready(function() {
ko.applyBindings(m);
});
Мои страница имеет простой компонент:
<test-component></test-component>
Когда я просматриваю страницу, элемент содержит шаблон моего компонента. Вместо отображения сообщения «Hello, world!» На странице отображается «Hello, undefined!». Я несколько раз отлаживал этот процесс и всегда успешно создавал экземпляр TestViewModel с соответствующими параметрами. Но модель представления, которая привязана к странице, генерируется после этого функцией createViewModel в Knockout. Что мне не хватает в моей настройке, чтобы привязать мой экземпляр модели к компоненту?
Спасибо за пример и пояснения. Теперь это имеет гораздо больший смысл. Что касается классов ES6, я использую Babel для преобразования их в ES5, поэтому они просто становятся функциями. – mgw854
Ах, я не знал, что ты использовал Вавилон, но с контрольной отметки я понял, что предлагаемое решение все равно получило трюк :-). Счастливое кодирование! – Jeroen