0

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

html-markup(一種)で利用できるはずのプロパティをすでに定義しているので、ステップ2をスキップしたいと思います。

更新: コメントで述べたように、そのようなことをすることには欠点があります。(これがおそらくknockoutjsでサポートされていない理由です)。別のアプローチを取りますが、それでも、非常に単純なマークアップからViewModelを生成できる単純なJavascript関数を作成しました。誰かが興味を持っているなら、それは私が思いついたものです:

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

0 に答える 0