1

私はこれをマッピングしようとしています

{ items: [
    { id: 1 },
    { id: 2 },
    { id: 3 }
]};

配列に何かを作成するときに、コレクションからアイテムを削除する関数を追加します。

var mapping = {
    'items': {
        key: function(data) {
            return ko.utils.unwrapObservable(data.id);
        },
        create: function(options) {
            var o = (new(function() {
                this._remove = function() {
                    options.parent.items.mappedRemove(options.data);
                };
                ko.mapping.fromJS(options.data, {}, this);
            })());
            return o;
        }
    }
};

この方法は、 を使用して追加されたアイテムを削除する場合に機能しますitems.mappedCreateが、 にマップされたアイテムでは機能しませんko.mapping.fromJS

デバッグ中に、さまざまな状況で options.parent が同じではないことに気付きました。なんで?両方のメソッドがアイテム observableArray を親として返す必要がありますか?

http://jsfiddle.net/fampinheiro/9CcME/の例でjsfiddleをセットアップしました。

ありがとうございました

4

1 に答える 1

1

問題をノックアウト ggroups に投稿しました

https://groups.google.com/d/topic/knockoutjs/cqBr_CPsfqc/discussion

Roy Jacobs が私の jsfiddle 問題を解決しました。

于 2012-08-06T16:52:07.283 に答える