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,

У меня есть следующие вопросы, пожалуйста:

  1. Как я могу удалить ошибки в консоли с моей скрипкой http://jsfiddle.net/6eh3Lrsm/9/

  2. Согласно комментариям от оригинальной ссылки SO, with Связывание воссоздает элементы DOM, которые могут помешать работе элементов управления - в каких случаях мне нужно было бы следить за этим (и любые ссылки на почему)? В этих случаях я предполагаю не использовать with и сделать проверку привязки внутри самого значения привязки данных будет достаточно?

0 ответов

Другие вопросы по тегам