就我而言,我有$scope.content
从后端动态拉取的,延迟为 1-2 秒。 如果在已经初始化CKEDITOR.inline()
之后填充内容,则不起作用。CKEDITOR
我最终得到了以下解决方案,它很好地解决了 2way 数据绑定和加载延迟问题。
<div id="divContent" contenteditable="true" ck-editor ng-model="Content">
</div>
angular.module('ui.ckeditor', []).directive('ckEditor', ["$compile", "$parse", "$sce", function ($compile, $parse, $sce) {
return {
require: '?ngModel',
link: function (scope, elm, attr, ngModel) {
var hasInit = false;
scope.$watch(attr.ngModel, function (newValue, oldValue, scope) {
if (newValue && !hasInit) {
hasInit = true;
var content = $.parseHTML(newValue.toString());
$(elm[0]).append(content);
CKEDITOR.inline(elm[0]);
elm.on('blur keyup change', function () {
scope.$evalAsync(read);
});
}
})
// Write data to the model
function read() {
var html = elm.html();
ngModel.$setViewValue($sce.trustAsHtml(html));
}
}
};
}]);