我有一个像这样的淘汰赛模板:
<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
?
.type-foo
无需添加一些虚假的CSS 类<ul>
(这就是我现在所做的)。- 期间不存储
"foo"
在数组项中myBinding.init()
。 - 无需内联事件处理程序以利用闭包变量 (
bindingValue
)。 - 不使用 jQuery 的
event.data
工具。我可以这样做,但我想从淘汰赛的绑定上下文中检索它,除非那是不可能的。