【发布时间】:2018-05-20 09:28:55
【问题描述】:
我以这种方式加载我的 Knockout 组件:
ko.components.register("example", {
viewModel: {require: "widgets/example"},
template: {require: "text!widgets/example.html"}
});
与example.js(极其简化):
"use strict";
define(["knockout"], function(ko) {
function ExampleWidgetViewModel(params) {
this.editedText = ko.observable("Example");
}
return ExampleWidgetViewModel;
});
和example.html:
<div id="example-dlg", data-bind="text: editedText"></div>
该组件像往常一样被称为<example></example>,并且一切正常。但我想访问 DOM 以消除模板中 id 的需要。
尝试将the method from the documentation 更改为example.js:
"use strict";
define(["knockout"], function(ko) {
function ExampleWidgetViewModel(params, componentInfo) {
this.editedText = ko.observable("Example");
}
return {createViewModel: ExampleWidgetViewModel};
});
但它抱怨找不到editedText。像这样的其他变体也有同样的问题:
"use strict";
define(["knockout"], function(ko) {
function creaExample(params, componentInfo) {
let ExampleWidgetViewModel = (params) => {
this.editedText = ko.observable("Example");
}
return ExampleWidgetViewModel;
}
return {createViewModel: creaExample};
});
您能提供一个工作示例吗?谢谢!
【问题讨论】:
标签: knockout.js requirejs amd