使用由Markdown字符串支持的Knockout綁定處理程序,並呈現(使用markdown.js和內置的'html'綁定處理程序)。Knockout,contenteditable(和markdown)
工作正常,但試圖添加contenteditable的行爲,並且遇到模糊不能更新的observable值時出現問題,或者僅使用刪除了所有markdown格式的文本更新observable。
任何想法或可以想到的替代方法?
完全小提琴這裏:http://jsfiddle.net/ZdxAS/3/
裝訂處理器:
ko.bindingHandlers["editable"] = {
init: function (element, valueAccessor) {
$(element).on('blur', function (event) {
var observable = valueAccessor();
observable($(this).text());
return true;
});
$(element).on('focus', function (event) {
var observable = ko.utils.unwrapObservable(valueAccessor());
$(this).text(observable);
return true;
});
return $(element).on('keydown', function (event) {
var esc, observable, submit;
esc = event.which === 27;
element = event.target;
if (esc) {
document.execCommand("undo");
element.blur();
return true;
} else {
return true;
}
});
},
update: function (element, valueAccessor, allBindings, viewModel, context) {
var accessor = function() {
var text = ko.utils.unwrapObservable(valueAccessor());
return markdown.toHTML(text);
}
return ko.bindingHandlers.html.update(element, accessor, allBindings, viewModel, context)
}
};
老兄,你是男人 - 萬分感謝。夫妻調整使得這正是我所尋找的:http://jsfiddle.net/yBLVN/ – 7zark7 2013-04-27 19:31:41