observableプロパティをCKEditorのインスタンスにリンクするには、カスタムバインディングハンドラを記述する必要があります。
まず、カスタムバインディングhereから開始することができます。投稿の1つにカスタムバインディングが含まれていますが、それはうまくいきません。あなたはチェックする必要があります。私はクレジットはもちろん、私には行っていない、ここではそれを下にコピーされた:
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);
}
}
典型的な使用は、HTMLで次のようになります。第二に
<textarea id="txt_viewModelVariableName"
data-bind="ckEditor: viewModelVariableName"></textarea>
、あなたが最初にによって書かれたcustom binding handler for TinyMCEをチェックアウトすることができRyan Niemeyerと他の有能な人たちによって更新されました。たぶんTinyMCEはCKEditorの代わりにあなたのために働くことができますか?
です.HTMLバインディングは双方向ではありません(https://github.com/SteveSanderson/knockout/issues/430)。独自の[contenteditableのカスタムバインディング](http://stackoverflow.com/questions/7904522/knockout-content-editable-custom-binding)を作成する必要があります。 – nemesv
それだけです。ありがとうございました! – jmogera
あなたのCSSをインラインにしないFroalaもあります。ノックアウトプラグイン:https:// github。com/froala/knockout-froala –