【发布时间】:2015-04-27 15:45:35
【问题描述】:
我需要订阅 DOM 元素的现有绑定。例如,我有以下输入元素:
<div id="MyDiv">
<input id="MyInput" data-bind="enable: isEnabled()" />
</div>
现在,假设我只能访问 DOM 元素,我需要执行以下操作:
var inputElement = $("#MyInput");
var bindings = ko.utils.getBindings(inputElement); // getBindings does not exist
var enableBinding = bindings["enable"];
if (enableBinding != undefined) {
enableBinding.subscribe(function (value) {
if (value == false)
$("#MyDiv").addClass("disabled");
else
$("#MyDiv").removeClass("disabled");
})
}
有没有办法做到这一点?
更新:我已经扩展了示例,以便您看到我的用例:这里的 div 由预处理器自动生成,并且需要 disabled 类,当输入被禁用。如果仅在输入元素上更改属性,则它不起作用。添加/删除必须是透明的...
【问题讨论】:
-
你试过
ko.utils.getBindings(inputElement.get(0));吗?目前你传入的是 jQuery 对象,而不是元素?编辑:啊,我想你的意思是getBindings本身不存在......? -
我不需要元素的视图模型,但需要精确的绑定,例如“启用”
-
在这个例子中,我需要知道“disabled”属性什么时候改变了...
-
嗯,明白你的意思...
-
也许还有另一种方法,例如自定义绑定 - 您要解决什么问题?
标签: javascript knockout.js data-binding