当原始内容通过jQuery更新时,我如何告诉PageDown更新其预览

How can I tell PageDown to update its preview when the raw content is updated via jQuery?

本文关键字:更新 何告诉 PageDown 原始 jQuery      更新时间:2023-12-11

JSFiddle:http://jsfiddle.net/92z35/2/

我有一个Pagedown编辑器,它目前运行得很好,除了少数情况下我必须用程序插入一些内容。如果插入然后键入,预览将更新。但如果我只是插入,预览将保持不变。

我错过了什么?

代码:

var converter = Markdown.getSanitizingConverter();
converter.hooks.chain("preBlockGamut", function (text, rbg) {
    return text.replace(/^ {0,3}""" *'n((?:.*?'n)+?) {0,3}""" *$/gm, function (whole, inner) {http://jsfiddle.net/BcuLq/#run
        return "<blockquote>" + rbg(inner) + "</blockquote>'n";
    });
});
var editor = new Markdown.Editor(converter);
ko.bindingHandlers.wysiwyg = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        editor.hooks.chain("onPreviewRefresh", function () {
            $(element).change();
        });
        editor.run();
    }
};
var ViewModel = function(first, last) {
    this.firstName = ko.observable(first);
    this.lastName = ko.observable(last);
    this.fullName = ko.computed(function() {
        return this.firstName() + " " + this.lastName();
    }, this);
    this.appendText = function(){
    $("#wmd-input").val($("#wmd-input").val() + '@')
    }
};
ko.applyBindings(new ViewModel("Planet", "Earth"));  

首先,向自定义绑定添加一个update处理程序,该处理程序会在可观察对象更改时刷新预览。一旦你做到了,通过改变可观察的而不是直接改变元素的val来进行所有的程序更改;这样Knockout将检测到值已更改,并调用新的update处理程序,该处理程序将告诉编辑器刷新。