【发布时间】:2013-04-26 22:25:46
【问题描述】:
处理由 Markdown 字符串支持的 Knockout 绑定处理程序,并呈现(使用 markdown.js 和内置的“html”绑定处理程序)。
工作正常,但尝试添加 contenteditable 行为,并且在模糊时无法更新可观察值或仅使用删除所有降价格式的文本更新可观察值时遇到问题。
您有什么想法或替代方法吗?
这里是完整的小提琴: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)
}
};
【问题讨论】:
标签: knockout.js markdown contenteditable