私が理解しているように、バインディングの中で$index
が利用可能であり、オブジェクトのインデックスを与えています...私はclick:
というバインディングを持っています。 click:foo
、$index
foo
にアクセスする必要があります。
方法はありますか?むしろ、あなたの結合の中に関数を使用してその周りをハッキングより
私が理解しているように、バインディングの中で$index
が利用可能であり、オブジェクトのインデックスを与えています...私はclick:
というバインディングを持っています。 click:foo
、$index
foo
にアクセスする必要があります。
方法はありますか?むしろ、あなたの結合の中に関数を使用してその周りをハッキングより
はい、
<input type="button" data-bind="click: function(data, event) { myClickHandler($index, data, event); }"/>
、あなただけのバインディングコンテキストを取得する必要があります。バインディングに関連付けられたDOM要素にアクセスできる限り、ko.contextFor()
関数を使用してバインディングコンテキストとそのすべてのプロパティを取得できます。
ハンドラで取得するイベントオブジェクトでは、target
プロパティを使用してノードにアクセスできます。それを使用してコンテキストを取得します。
var viewModel = {
foo: function (data, event) {
var context = ko.contextFor(event.target);
// do stuff with context.$index()
}
};
'$ index'はオブザーバブルなので、オブザーバブルはノックアウトの関数であるので、' $ index() 'はカッコで囲む必要がありました。http://goo.gl/TIGYV1 – andrewcockerham
これは悲しいですが真です。 – jessegavin
クリックやぼかしなどのデフォルトのハンドラは、データやイベントだけでなく、より多くの情報を渡す必要があります。上記の速いチートが解決策にうまく収まらない場合は、私はカスタムバインディングを使用します。 – ethermal