データバインディングを備えたWYSIWYGエディター用のAngularJSでCKEditorを使用しようとしていますが、すべてがうまく機能しているようです。高度な構成可能性は、要件のマッチングに大いに役立ちました。
現在、ダーティ フォームの問題に直面しています。
問題:
model -> abc<br>def\n
ckeditor dataprocessor makes it -> abc<br />def
これは、モデルとエディタのコンテンツの同等性を壊し、フォームを汚します。
私が望むのは、初期化後に前処理された値でモデルを設定して、平等が維持されるようにすることだけです。
Angular コードは次のとおりです。
app.directive('contenteditable', function() {
return {
require : 'ngModel',
link : function(scope, element, attrs, ctrl) {
var editor = CKEDITOR.inline(element[0]);
// view -> model
editor.on('pasteState', function() {
scope.$apply(function() {
ctrl.$setViewValue(editor.getData());
});
});
// model -> view
ctrl.$render = function() {
editor.setData(ctrl.$viewValue);
};
// load init value from DOM
ctrl.$render();
}
};
});
かなりの検索を行いましたが、明らかに推奨されていないプラグインをオフにする以外に何も見つかりませんでした. 助言がありますか?
- 編集 -
ディレクティブで:
editor.on('instanceReady', function() {
scope.$apply(function() {
ctrl.$setViewValue(editor.getData());
scope.$broadcast('resetContentEditableModel');
});
});
コントローラーで:
$scope.$on('resetContentEditableModel', function() {
$scope.model.value = $scope.form.value;
});
これはうまくいっているようです。