10

そのバインディングのフィールドを削除/クリアしたいと思います。

self.Selected = ko.observable();

"Selected": {
    "ID": 5,
    "Name": "22",
    "Active": true,
    "Temp": "2013-01-28T18:14:48.340Z"
  }

self.Selected.remove()--->エラー:メソッド'remove'がありません

self.Selected.removeAll(); ->未定義のメソッド'removeAll'を呼び出せません

self.Selected.cleanNode()--->エラー:メソッド'cleanNode'がありません

http://jsfiddle.net/yvTFN/24/ :実際の例を見ることができます

名前を編集した後、self.update =関数が機能し、選択されたプロパティをクリアする必要があります。そうしないと、もう一度[更新](値なし)をクリックすると、値が空の文字列で更新されます。

4

2 に答える 2

19

の値を に設定するだけSelectedですnull:

self.Selected(null);

編集:あなたのjsfiddleはko.removeNode、あなたが望むものではないものを使用しています。

動作するバージョンについては、http: //jsfiddle.net/yvTFN/26/を参照してください。

于 2013-01-28T19:51:52.860 に答える
1
self.Selected.clearBindings = function __clearSelection__() {
    self.Selected = new ko.observable(self.Selected());
    self.Selected.clearBindings = __clearSelection__;
}

このアプローチは、本当に必要なものに応じて、必要なことを行うことができます...いくつかの注意事項があります

  • KnockoutJS の内部構造がわからない
  • 一部のブラウザー (IE<9) ではメモリ リークが発生する可能性があります。
  • これが実行時間の長いページで、このメソッドが何度も呼び出された場合、予期しない結果になる可能性があります。
于 2013-01-28T18:59:45.607 に答える