1

Knockout.JSを使用して、オブジェクトがマッピングプラグインを介して読み込まれ、動的に追加されるときに、ビューモデル内のオブジェクトを最適に拡張する方法を決定しようとしています。この例では、メソッドaddChildをPersonオブジェクトに追加しています。

マッピング中の拡張:

    var myPersonModel = function (data) {
        ko.mapping.fromJS(data, {}, this);

        this.addChild = function () {
            this.children.push(new Child());
        } .bind(this);
    }

    var mapping = {
        'people': {
            create: function (options) {
                return new myPersonModel(options.data);
            },
        }
    }

    var viewModel = ko.mapping.fromJS(data, mapping);

動的作成中の拡張:

    function Person(id, name, children) {
        this.id = ko.observable(id);
        this.name = ko.observable(name);
        this.children = ko.observable(children);
        this.addChild = function () {
            this.Forms.push(new Child());
        } .bind(this);
    }

しかし、自分自身を繰り返す必要がなく、マップされたオブジェクトと新しいオブジェクトの両方がメソッドを取得するように、これを行うためのより簡単な方法が必要であるように思われますaddChild

4

1 に答える 1

1

この回答、特にJSFiddle の実際の例を見てください。

あなたのコードは必要なものに近いようです。

mapping折りたたんでコンストラクターにko.mapping.fromJS入れるだけでよいと思います。Person

于 2012-09-04T21:17:32.800 に答える