gpt4 book ai didi

knockout.js - 如何在嵌套绑定(bind)中获取父模板绑定(bind)值?

转载 作者:行者123 更新时间:2023-12-01 10:05:55 24 4
gpt4 key购买 nike

我有一个这样的 knockout 模板:

<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自定义绑定(bind)处理程序:

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父模板,如自定义绑定(bind)中提供的,在点击处理程序中通过 knockout 的 bindingContext ?

  • 不添加一些伪造的 CSS 类,如 .type-foo<ul> (这就是我现在所做的)。
  • 不存储"foo"myBinding.init() 期间的数组项中.
  • 没有内联事件处理程序以利用闭包变量 (bindingValue)。
  • 不使用 jQuery 的 event.data设施。我可以这样做,但我想从 Knockout 的绑定(bind)上下文中检索它,除非那是不可能的。

最佳答案

绑定(bind)上下文作为绑定(bind)的第 5 个参数传入。因此,您可以在自定义绑定(bind)中扩充绑定(bind)上下文,例如 context.$itemType = bindingValue.itemType;。此处示例:http://jsfiddle.net/rniemeyer/yeN8P/

另一种选择是确保您的 itemType$parent 数据中可用。您可以通过将数据传递到您的模板来执行此操作,例如:

模板:{name: 'list', data: { items: items, itemType: 'foo' }}

所以,现在我们不只是传递 items,而是传递 itemsitemType,所以从一个 child $parent .itemType 将包含“foo”。

此处示例:http://jsfiddle.net/rniemeyer/yeN8P/1/

关于knockout.js - 如何在嵌套绑定(bind)中获取父模板绑定(bind)值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com