我正在尝试将 CKEditor 与 AngularJS 一起用于具有数据绑定的所见即所得编辑器,并且一切似乎都运行良好。极端的可配置性对我们的需求匹配有很大帮助。
我们现在面临一个脏表格的问题。
问题:
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;
});
这似乎在起作用。