对于cleditor自定义绑定,通过基因敲除可分类的分类元素后失败(Custom binding f

2019-10-19 09:09发布

首先是检查这个小提琴 。

我与淘汰赛排序库创建的元素的排序阵列。 当我最初应用结合的cleditor初始化罚款。

然而,当排序元素进行排序,则cleditor未能重新初始化(我不知道,但cleditor失败会发生什么)。 该cleditor只是展示,而不是在所有其他浏览器Firefox中的实际值,并没有什么“真”。

我试图找出其中的问题是,无论是在自定义绑定,或jQuery的UI,或者淘汰赛排序库?

我不是在我的控制台recieving任何错误。

ko.bindingHandlers.cleditor = {
        init: function(element, valueAccessor, allBindingsAccessor) {

            var modelValue = valueAccessor(),
                allBindings = allBindingsAccessor();

            var $editor = jQuery(element).cleditor({
                height: 50,
                controls: "bold italic underline | bullets numbering | undo redo"
            });

            $editor[0].change(function() {

                var elementValue = $editor[0].doc.body.innerHTML;
                if (ko.isWriteableObservable(modelValue)) {
                    modelValue(elementValue);

                } else {
                    if (allBindings['_ko_property_writers'] && allBindings['_ko_property_writers'].cleditor) {
                        allBindings['_ko_property_writers'].cleditor(elementValue);
                    }
                }
            });
        },

        update: function(element, valueAccessor) {
            var value = ko.utils.unwrapObservable(valueAccessor()) || '',
                $editor = jQuery(element).cleditor();

            if ($editor[0].doc.body.innerHTML !== value) {
                //$editor[0].doc.body.innerHTML = value;
                $editor[0].doc.body.innerHTML = value;
                $editor[0].focus();
            }
        }
    };

我怎样才能让cleditor工作,即使在元素进行排序?

我发现这个资源 ,而是作为主题说我找不到任何错误的代码。

Answer 1:

您提供的链接是有益的。 该CLEditor refresh方法是它拖到后更新的正确方法。 它只是需要在正确的时间做,使用排序stop活动。

stop: function(event, ui) {
    $(ui.item).find("textarea").cleditor()[0].refresh();
}

http://jsfiddle.net/mbest/rh8c2/1/

我还努力这个集成到您的cleditor结合。 在init函数:

jQuery(document).on('sortstop', function(event, ui) {
    if (jQuery.contains(ui.item[0], element)) {
        jQuery(element).cleditor()[0].refresh();
    }
});

我也做的改变update功能,以保持<textarea>同步值,因为refresh从更新编辑器的值<textarea>

$editor[0].updateTextArea();

http://jsfiddle.net/mbest/jw7Je/7/



文章来源: Custom binding for cleditor fails after sorting elements through knockout sortable