我正在尝试将Bootstrap 3模式合并到具有自定义绑定的knockoutjs视图模型中,并且大量使用knockout.js - deferred databinding for modal?。
在弹出窗口中使用https://jsfiddle.net/BitWiseGuy/4u5egybp/每个observable是否有效,即data-bind="value: UserBeingEdited() && UserBeingEdited().Age
,这将导致对具有许多字段的较大视图模型进行大量检查(写入)。 / p>
因此,要删除此检查,我尝试使用return ko.bindingHandlers['with'].update.apply(this, arguments);
修改模态绑定,如下所示:
ko.bindingHandlers['modal'] = {
init: function(element, valueAccessor, allBindingsAccessor) {
var allBindings = allBindingsAccessor();
var $element = $(element);
$element.addClass('hide modal');
if (allBindings.modalOptions && allBindings.modalOptions.beforeClose) {
$element.on('hide', function() {
var value = ko.utils.unwrapObservable(valueAccessor());
return allBindings.modalOptions.beforeClose(value);
});
}
return ko.bindingHandlers['with'].init.apply(this, arguments);
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
if (value) {
$(element).removeClass('hide').modal('show');
} else {
$(element).modal('hide');
}
return ko.bindingHandlers['with'].update.apply(this, arguments);
}
};
然后允许我在没有任何检查data-bind="text: quantity"
的情况下进行绑定,但是虽然我正在收到错误:Uncaught TypeError: Cannot read property 'apply' of undefined
。
我有以下问题:
如何使用我的小提琴移除控制台中的错误http://jsfiddle.net/6eh3Lrsm/9/
根据原始SO链接的评论,with
绑定重新创建了可以阻止控件工作的DOM元素 - 在这种情况下我需要注意这个(以及任何指向原因的链接) )?在这些情况下,我假设不使用with
并在数据绑定值本身内进行绑定检查就足够了吗?