4im*_*ble 3 data-binding knockout.js knockout-3.0
让我说我有这个:
<div data-bind="enable: false">
<div data-bind="someCustomBinding: myValue"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以从自定义绑定中访问父容器的"启用"绑定吗?
==澄清:==
在自定义绑定中,您可以使用valueAssessor访问当前绑定值.您还可以通过bindingContext通过allBindings甚至不同相关上下文的值访问其他绑定.
我只是想知道你是否可以从自定义绑定中访问父html元素的绑定(以类似于valueAccessor的方式)
像这样的东西(sudo代码):
ko.bindingHandlers.someCustomBinding=
{
init: (element, valueAccessor, allBindings) =>
{
var parentIsEnabled =
ko.GetContextFor($(element).parent()).get('enable');
}
}
Run Code Online (Sandbox Code Playgroud)
您可以访问父节点并解析其data-bind
属性:
JSON.parse('{' + $(element).parent().data("bind") + '}')
Run Code Online (Sandbox Code Playgroud)
注意在绑定定义中加入双引号("),如下所示 jsFiddle
可悲的是,我找不到更优雅的方式来做到这一点.
KO允许您使用dataFor
/ 访问dom元素的viewmodel contextFor
,但是我没有看到任何方法来获取dom元素的绑定定义.
编辑: 经过进一步调查,您可以访问父母绑定以下内容:
ko.bindingProvider.instance.getBindings($(element).parent().get(0), bindingContext)
Run Code Online (Sandbox Code Playgroud)
它将返回带有绑定的对象.例如,如果您声明了一个,data-bind="style: { backgroundColor: myBackgroundColor }"
您将能够访问observableko.bindingProvider.instance.getBindings($(element).parent().get(0), bindingContext).style.backgroundColor
唯一的问题是你无法在viewmodel中获取可观察的名称(或者至少我不知道如何,除非你将每个属性与你的viewmodel 比较,比如用于比较knockout observables的idiom)
归档时间: |
|
查看次数: |
2117 次 |
最近记录: |