Bootstrap 3 Modal и Knockout с использованием ko.bindingHandlers['with']
Я пытаюсь включить модал Bootstrap 3 в view-модель knockoutjs с пользовательским связыванием, и в значительной степени воспользовался knockout.js - отложенная привязка данных для модальных?,
Используя https://jsfiddle.net/BitWiseGuy/4u5egybp/ каждая наблюдаемая во всплывающем окне проверяется, если она действительна, т.е. data-bind="value: UserBeingEdited() && UserBeingEdited().Age
и это приведет к большому количеству проверок (для записи) для большей модели представления со многими полями.
Таким образом, чтобы удалить эту проверку, я попытался использовать модифицировать модальное связывание с 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
и сделать проверку привязки внутри самого значения привязки данных будет достаточно?