knockoutjs自动生成viewmodel

时间:2012-11-09 17:46:18

标签: javascript knockout.js viewmodel

有没有人知道是否可以自动生成knockoutjs的viewmodel。

1)我有(例如)以下html代码:

<input type="text" data-bind="value: XYZ" />
<input type="text" data-bind="value: ABC" />
<input type="text" data-bind="value: Prop1" />

2)然后我需要创建一个这样的viewmodel:

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;
}

0 个答案:

没有答案