有谁知道是否可以自动为 knockoutjs 生成视图模型。
1)我有(例如)以下html代码:
<input type="text" data-bind="value: XYZ" />
<input type="text" data-bind="value: ABC" />
<input type="text" data-bind="value: Prop1" />
2)然后我需要像这样创建一个视图模型:
function ViewModel()
{
this.XYZ = ko.observable();
this.ABC = ko.observable();
this.Prop1 = ko.observable();
}
我想跳过第 2 步,因为我已经定义了应该在 html-markup 中可用的属性(有点)。
更新: 正如评论中提到的,做这样的事情会有缺点。(这可能是knockoutjs不支持它的原因)。我将采用不同的方法,但是我制作了一个简单的 Javascript 函数,它可以从一个非常简单的标记中生成一个 ViewModel。如果有人有兴趣,这就是我想出的:
function getViewModelFromView(selector) {
var vm = {};
$("[data-bind]", selector).each(function () {
var attribute = $(this).attr("data-bind");
if (attribute.indexOf(':') > 0) {
vm[attribute.slice(attribute.indexOf(':')+1).trim()] = ko.observable();
}
});
return vm;
}