私はこのようなノックアウトテンプレートを持っています:
<script type="text/html" id="list">
<ul data-bind="foreach: items">
<li data-bind="{text: name}"></li>
</ul>
</script>
私がこのように使用すること:
<div data-bind="
template: {name: 'list', data: itemList},
myBinding: {itemType: 'foo'}
"></div>
myBinding
カスタムバインディングハンドラーがあります:
ko.bindingHandlers.myBinding = {
init: function(element, valueAccessor) {
var bindingValue = valueAccessor();
alert ( bindingValue.itemType ); // alerts "foo"
// now set up a jQuery click handler
$(element).on("click", "li", listItemClickHandler);
}
};
そして、イベントハンドラー:
function listItemClickHandler() {
var bindingContext = ko.contextFor(this);
alert( "bindingValue.itemType ???" );
});
itemType
カスタムバインディングで提供されているように、ノックアウトを介してクリックハンドラーで親テンプレートを取得する方法はありますbindingContext
か?
- のような偽のCSSクラスを追加せず
.type-foo
に<ul>
(これが私が今行っていることです)。 "foo"
の間に配列アイテムに格納せずにmyBinding.init()
。- クロージャー変数()を利用するためにイベントハンドラーをインライン化せずに
bindingValue
。 - jQueryの
event.data
機能を使用せずに。それは可能ですが、それが不可能でない限り、ノックアウトのバインディングコンテキストから取得したいと思います。