gpt4 book ai didi

data-binding - 从子元素访问 knockout 绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 05:00:08 26 4
gpt4 key购买 nike

假设我有这个:

<div data-bind="enable: false">
<div data-bind="someCustomBinding: myValue"></div>
</div>

我是否可以从自定义绑定(bind)中访问父容器的“启用”绑定(bind)?

== 澄清:==

在自定义绑定(bind)中,您可以使用 valueAssessor 访问当前绑定(bind)值。您还可以通过 allBindings 访问其他绑定(bind),甚至可以通过 bindingContext 访问不同相关上下文中的值。

我只是想知道您是否可以从自定义绑定(bind)中访问父 html 元素的绑定(bind)(以类似于 valueAccessor 的方式)

类似这样的东西(sudo 代码):

ko.bindingHandlers.someCustomBinding=
{
init: (element, valueAccessor, allBindings) =>
{
var parentIsEnabled =
ko.GetContextFor($(element).parent()).get('enable');
}
}

最佳答案

你可以访问父节点并解析它的data-bind属性:

JSON.parse('{' + $(element).parent().data("bind") + '}')

注意在绑定(bind)定义中使用双引号 ("),如下所示 jsFiddle

遗憾的是,我找不到更优雅的方法。

KO 允许您使用 dataFor/contextFor 访问 dom 元素的 View 模型,但我没有看到任何方法来获取 dom 元素的绑定(bind)定义。

编辑:经过进一步调查,您可以通过以下方式访问 parent 绑定(bind):

ko.bindingProvider.instance.getBindings($(element).parent().get(0), bindingContext)

它将返回一个带有绑定(bind)的对象。例如,如果您声明一个 data-bind="style: { backgroundColor: myBackgroundColor }" 您将能够通过 ko.bindingProvider.instance.getBindings($(element) .parent().get(0), bindingContext).style.backgroundColor

唯一的问题是您无法在 View 模型中获取可观察的名称(或者至少我不知道如何获取,除非您将每个属性与您的 View 模型进行比较,例如 idiom for comparing knockout observables)

关于data-binding - 从子元素访问 knockout 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23113503/

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