0

ノックアウト マッピング プラグインを使用しようとしていますが、一部を除いて正常に動作しています。

オブジェクトの配列があります。配列を監視可能にしたいのですが、現時点では配列内のオブジェクトを監視可能にしたくありません。

例えば:

主要

  • タブ[]

タブ

  • 題名
  • ID
  • ウィンドウズ[]

  • 題名
  • ID
  • 位置
  • var MainMapping = {
      'Tabs': {
        create: function(options) {
            return ko.mapping.fromJS(options.data, {'ignore': ['Id']}, model.tab);
        }
      }
    };
    

Window プロパティを監視できないようにしたいのですが、Windows 配列を監視したいのです。

これを行う方法について誰かが私にいくつかのヒントを教えてもらえますか?

4

2 に答える 2

0

マッピングプラグインには、コピーされた値でJSプロパティを作成するコピーオプションがあります(つまり、「Window.Title」をトップレベルのビューモデルのプロパティマップとして配置することはできないと思いますが、自由に試してみてください。 )、それはあなたが求めているもののように聞こえます。ただし、これは子であるため、機能するかどうかはわかりません。したがって、マッピングを完全に制御できるマッピングの作成を確認することをお勧めします。また、ウィンドウデータオブジェクトをWindows配列に直接コピーすることもできます。または、その上でマッピングプラグインを使用し、その上でコピーマッピングを使用します。

于 2013-03-14T17:57:47.240 に答える
0

これが私が思いついた答えです:

var Main = function() {
    return { ....}
}();

var mainMap = {
    'Tabs':{
        create:function(options){
            return new Tab(options.data);
        }
    }
};

function Tab(data){
    var defaults = { ...}
    data = $.extend(true, defaults, data);

    var tabMap = {
        'copy': ['id'],
        key: function(data) {
            return ko.utils.unwrapObservable(data.id);
        },
        'windows': {
            create: function(options) {
                return new myWindow(options.data);
            }
        }
    };

    ko.mapping.fromJs(data, tabMap, this);
}

function myWindow(data){
    var defaults = { ....};
    return $.extend(true, defaults, data);
}

ko.mapping.fromJS(data, mainMap, Main);
ko.applyBindings(Main, $('#Main')[0]);
于 2013-03-15T17:26:18.350 に答える