2013-11-28 6 views
0

JSFiddle : http://jsfiddle.net/92z35/2/원시 콘텐츠가 jQuery를 통해 업데이트 될 때 미리보기를 업데이트하려면 PageDown을 어떻게 표시 할 수 있습니까?

은 내가 프로그래밍 방식으로 일부 내용을 삽입해야 할 때 현재 몇 가지 경우를 제외하고, 완벽하게 작동하는 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 처리기를 추가합니다. 이 작업을 완료하면 요소의 val을 직접 변경하지 않고 관찰 가능을 변경하여 모든 프로그래밍 방식 변경을 수행하십시오. 그런 식으로 knockout은 값이 변경된 것을 감지하고 새로운 update 핸들러를 호출하여 편집기에게 새로 고침을 지시합니다.

+0

고맙습니다. editor.refreshPreview() 함수를 사용하여 제안과 함께 사용할 수있었습니다. 건배! – SB2055