2016-04-08 7 views
1

を期待通りに結合]をクリックする観察可能な配列が、私はビューから観察可能な配列の要素を削除したい場合は、私はこのような何かを行う可能性があります動作しません。..ノックアウト:

<div data-bind="foreach: records"> 
    <input type="checkbox" data-bind="checked: isChecked, click: $parent.removeRow"> 
</div> 

を、その後、私のViewModelにバインド....

this.removeRow = function(item) { this.records.remove(item); } 

期待通りに動作します。

しかし、私はそれが

click: $parent.records.remove 

$dataを削除するために渡されるだろうと思ってみていない理由は、余分なステップだった考え出し。それは動作しませんし、私は、イベントが2番目のパラメータとして渡されていたので、私はので、私が試した、remove()の問題を引き起こしている可能性がありますこと、多分考えUncaught TypeError: this.peek is not a function

を得る:

click: _.unary($parent.records.remove) 

_.unaryリターンを1つのパラメータだけを取る関数。これはどちらもうまくいかず、同じピークが表示されます。

答えて

1

clickバインディングがremoveメソッドを呼び出すとき、thisrecordsの配列ではないため、機能しません。

あなたがバインドを使用してこの問題を解決することができます。私の意見では

click: $parent.records.remove.bind($parent.records) 

をあなたのビューモデル上の専用removeRow機能を使用して、元のソリューションは、きれいなソリューションです。