我有以下自定义绑定
ko.bindingHandlers.dialogFor = {
init: function(el, valueAccessor) {
$(el).dialog();
var val = valueAccessor();
if(ko.isObservable(val))
$(el).on('dialogclose', function(){
val(null)
});
}
};
这允许我使用dialogFor
绑定标记html片段,并通过设置observables打开对话框。
不幸的是,传入的值总是被解包,因此if检查永远不会通过,并且在关闭对话框时重置observable不起作用。
如何获得传递的实际可观察量,而不仅仅是未包装的值?
答案 0 :(得分:1)
我无法看到你的HTML这样的猜测,我认为你在自定义绑定的值中使用了observable,如:
<div data-bind="dialogFor: val()"></div>
如果是,那么你已经解开了值而且只有值而不是observable传递给你的自定义绑定,所以这就是你的if条件失败的原因。你应该像以下一样使用它:
<div data-bind="dialogFor: val"></div>
我创建了一个working example,其中jquery ui对话状态由observable控制。