Data binding 从子元素访问敲除绑定

Data binding 从子元素访问敲除绑定,data-binding,knockout.js,knockout-3.0,Data Binding,Knockout.js,Knockout 3.0,假设我有: <div data-bind="enable: false"> <div data-bind="someCustomBinding: myValue"></div> </div> 对。init和update函数的bindingContext参数公开了对$parent、$parents和$root的访问,您可以访问父节点并解析其数据绑定属性: JSON.parse('{' + $(element).parent().data("

假设我有:

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

对。
init
update
函数的
bindingContext
参数公开了对
$parent
$parents
$root

的访问,您可以访问父节点并解析其
数据绑定
属性:

JSON.parse('{' + $(element).parent().data("bind") + '}')
请注意在绑定定义中加上双引号,如下所示

遗憾的是,我找不到比这更优雅的方法了

KO允许您使用
dataFor
/
contextFor
访问dom元素的viewmodel,但我看不到任何获取dom元素绑定定义的方法

编辑: 进一步调查后,您可以使用以下内容访问父绑定:

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


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

这似乎使我能够访问关联的viewmodels,而不是绑定值本身。我想获取分配给“enable”的值,在本例中为“false”“.我是不是误解了怎么用$parent?哦,我明白了。对不起,我误解了。我不知道是否存在类似的情况。你能用一个更具体的例子来更新这个问题吗?可能有一种“击倒方式”您是否正在尝试查看父元素是否已启用/禁用,或者是否需要访问任何绑定值和enable,这恰好是您在此处使用的示例?我希望获取绑定的值,而enable仅在本示例中使用。我猜您想要的是绑定的当前敲除评估值,而不是绑定中的表达式?为了澄清..如果您有“enable:vmobservedproperty”,您想知道enable绑定到vmobservedproperty还是enable当前为true或false?添加了更多信息,我怀疑这是不可能的(如果没有大量恶意攻击)这将告诉您每个绑定绑定到哪个表达式,但不会告诉计算表达式的运行时值。我不确定这是否是他想要的。@ChuckSchneider我相信这是关键:这个值是一个常数,而不是一个可观察的值。对于我上面的评论,他说这只是一个例子。所以我不确定情况是否如此。我想补充一下。。。您也可以使用$(element).parent().data(“bind”)来获得数据绑定。@ChuckSchneider它确实有效,谢谢您的提示,我不知道。最新答案
ko.bindingProvider.instance.getBindings($(element).parent().get(0), bindingContext)