0

foreachバインディング式で子ViewModelを$parentの関数に送信するにはどうすればよいですか?

私がすることができます:

   <button class="radius button small" data-bind="click:function() { $parent.openDialogueEdit($data)}">Edit</button>

ただし、openDialogueEditでは、編集ダイアログで使用されるオブザーバブルに$ dataをバインドし、$ dataには、オブザーバブル自体ではなく、評価されたオブザーバブルが含まれているため、役に立ちません。ダイアログの編集。

4

2 に答える 2

2

デフォルトでは、バインドされた関数に送信されるアイテムは現在のコンテキストであり、これはforeachバインディングの子ビューモデルです。

data-bind="click: $parent.selectedItem"

必要なのはそれだけです。このフィドルで実際にこれを見ることができます。

于 2013-03-06T23:07:17.450 に答える
1

プロトタイプスコープの問題を解決するために、コンストラクターにバインドを追加できます

var ViewModel = function() {
    this.removeSeat = this.removeSeat.bind(this);
};

ViewModel.prototype.removeSeat = function(seat) {
    this.seats.remove(seat);
};

これにより、関数thisは標準のclickバインディングで適切に関連付けられます。少し厄介ですが、最も簡単な解決策だと思います。

于 2013-03-07T20:45:21.413 に答える