2013-11-28 43 views
0

的jsfiddle:http://jsfiddle.net/92z35/2/如何在通過jQuery更新原始內容時告訴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")); 

回答

1

首先,添加一個update處理您的自定義綁定,導致預覽時可觀察到的變化進行刷新。一旦你完成了這些,通過修改observable來完成所有的程序改變,而不是直接改變元素的val;這樣Knockout就會檢測到這個值已經改變了,並且調用你的新的處理器,它會告訴編輯器刷新。

+0

謝謝你,我剛剛找到了editor.refreshPreview()函數,我可以使用你的建議。乾杯! – SB2055