我敢肯定我在这里遗漏了一些非常明显的东西,但我是第一次尝试 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 };
(忽略模板,它只是一个使用导入的段落标签)
然后是一个入口点:
"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 实例。但是绑定到页面的视图模型是由 Knockout 中的 createViewModel 函数生成的。我在将模型实例绑定到组件的设置中缺少什么?