以前の回答に対するマイナーな修正と変更:
- ツールバーを使用すると、特定のケースで表示されるグリッチがあります。これを修正するには、blur イベントによって発生した更新をブロックする必要があります。
- また、要素の「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>