如何将observable绑定到可编辑的div文本内容?
答案 0 :(得分:33)
您需要修改默认的“text”绑定,以便能够将编辑后的div的内容写回observable。此任务的简单自定义绑定处理程序如下所示:
ko.bindingHandlers.editableText = {
init: function(element, valueAccessor) {
$(element).on('blur', function() {
var observable = valueAccessor();
observable( $(this).text() );
});
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).text(value);
}
};
但请注意,此示例代码需要jQuery。
用法就像这样简单:
<div contentEditable="true" data-bind="editableText: foo"></div>
以下是一个示例(用CoffeeScript编写):http://jsfiddle.net/aBUEu/1/
答案 1 :(得分:4)
默认情况下,您无法执行此操作,因为更改可编辑div中的文本不会引发任何会更新模型中值的事件。
您需要一个自定义绑定。您可以在此处阅读:http://knockoutjs.com/documentation/custom-bindings.html