Bạn phải viết trình xử lý ràng buộc tùy chỉnh để cho thuộc tính quan sát của bạn được liên kết với một phiên bản của CKEditor.
Trước tiên, bạn có thể bắt đầu từ liên kết tùy chỉnh được tìm thấy here. Một trong những bài viết có chứa một ràng buộc tùy chỉnh, mặc dù tôi không chắc chắn nó hoạt động. Bạn phải kiểm tra. Tôi sao chép nó xuống đây, tín dụng không đi với tôi tất nhiên:
ko.bindingHandlers.ckEditor = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var txtBoxID = $(element).attr("id");
var options = allBindingsAccessor().richTextOptions || {};
options.toolbar_Full = [
['Source', '-', 'Format', 'Font', 'FontSize', 'TextColor', 'BGColor', '-', 'Bold', 'Italic', 'Underline', 'SpellChecker'],
['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl'],
['Link', 'Unlink', 'Image', 'Table']
];
// handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
if (CKEDITOR.instances[txtBoxID]){
CKEDITOR.remove(CKEDITOR.instances[txtBoxID]);
}
});
$(element).ckeditor(options);
// wire up the blur event to ensure our observable is properly updated
CKEDITOR.instances[txtBoxID].focusManager.blur = function() {
var observable = valueAccessor();
observable($(element).val());
};
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var val = ko.utils.unwrapObservable(valueAccessor());
$(element).val(val);
}
}
Một sử dụng điển hình sau đó sẽ là trong HTML:
<textarea id="txt_viewModelVariableName"
data-bind="ckEditor: viewModelVariableName"></textarea>
Thứ hai, bạn có thể kiểm tra custom binding handler for TinyMCE ban đầu được viết bởi Ryan Niemeyer và được cập nhật bởi những người tài năng khác. Có lẽ TinyMCE có thể phù hợp với bạn thay vì CKEditor?
Liên kết html là [không hai chiều] (https://github.com/SteveSanderson/knockout/issues/430). Bạn cần tạo [liên kết tùy chỉnh riêng cho nội dung có thể chỉnh sửa] của riêng bạn (http://stackoverflow.com/questions/7904522/knockout-content-editable-custom-binding). – nemesv
Vậy đó. Cảm ơn bạn! – jmogera
Ngoài ra còn có Froala, mà sẽ không đặt css của bạn nội tuyến. Plugin Knockout: https: // github.com/froala/knockout-froala –