0

asp.net mvcを使用して、ビューモデルを渡し、ノックアウトを取得してビューモデルをマップし、これにバインドします。

これはすべて私にとってはうまく機能しています。私がやろうとしているのは、削除を追跡することです。

_destroyプロパティを追加することでこれを実行できると思いましたが、falseに設定しました。

その後、destroyがtrueに設定するまで、UIがこれを無視することを期待していました。

しかし、これは事実ではないようであり、このプロパティの単なる存在が破壊されたものとして扱われる原因となっています。

これはバグですか、それとも私はこれを間違って処理していますか?

どうもありがとう、コーハン

  var model = [{"Id":1,"Name":"Bikes","Parent":null,"_destroy":false},
  {"Id":2,"Name":"Components","Parent":null,"_destroy":false},
  {"Id":3,"Name":"Clothing","Parent":null,"_destroy":false},
  {"Id":4,"Name":"Accessories","Parent":null,"_destroy":false},
  {"Id":5,"Name":"Mountain Bikes","Parent":1,"_destroy":false},
  {"Id":6,"Name":"Road Bikes","Parent":1,"_destroy":false},
  {"Id":7,"Name":"Touring Bikes","Parent":1,"_destroy":false},
  {"Id":8,"Name":"Handlebars","Parent":2,"_destroy":false}] ;

上記の要素はいずれも表示されません。「_destroy」:nullでも同じ効果があります。

問題の実例...

http://jsfiddle.net/jy53e/6/

更新:マッピング拡張機能の問題のようです。

4

1 に答える 1

5

何が起こっているのか_destroyというと、マッピングプラグインを介して送信していて、それが監視可能なものとして出力されているということです。Knockoutは、それが監視可能(関数)であることを期待していません。したがって、が関数であり、その値を確認するためにアンラップされていないif (_destroy)ため、結果のようなチェックを実行するとtrueになります。_destroy

http://jsfiddle.net/rniemeyer/jy53e/7/のようにして、監視可能になるのを防ぐこと_destroyができます。

したがって、マッピングオプションを使用します。

var mappingOptions = {
    create: function(options) {
        return ko.mapping.fromJS(options.data, { copy: ["_destroy"] }); 
    }
};
于 2011-10-06T22:49:25.170 に答える