淘汰赛js - >绑定到可编辑的div文本?

时间:2012-07-12 09:01:59

标签: javascript javascript-events knockout.js

如何将observable绑定到可编辑的div文本内容?

2 个答案:

答案 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