对先前答案的小修复和更改:
- 在使用工具栏的某些情况下会出现一个小故障。要解决此问题,必须在通过模糊事件发生时阻止更新。
- 还添加了通过元素上的“summerOptions”属性覆盖选项的能力。
这是我的更新:
ko.bindingHandlers.summernote = new function () {
var isblur = false;
this.init = function (element, valueAccessor, allBindings) {
var value = valueAccessor();
var options = $.extend(value, {
height: 100,
toolbar: [
["style", ["bold", "italic", "underline", "clear"]],
["fontstyle", ["style"]],
["fontsize", ["fontsize"]],
["lists", ["ul", "ol", "paragraph"]],
["links", ["link", "picture"]],
["misc", ["fullscreen", "codeview"]]
],
onblur: function () {
isblur = true;
value($(element).code());
isblur = false;
}
});
$.extend(options, allBindings.get("summerOptions"));
return $(element).summernote(options);
};
this.update = function (element, valueAccessor) {
if (!isblur) {
var value = valueAccessor();
$(element).code(value());
}
};
};
以及用法:
<textarea data-bind="summernote: Content"></textarea>
或使用选项覆盖:
<textarea data-bind="summernote: Content, summerOptions: { height: 200 }"></textarea>