我假设您想将模型中的 HTML 文本绑定到元素。我使用 ng-bind-html 来渲染模型中的内容,并创建了指令 ck-inline 来添加内联功能并将模型绑定到内联编辑器中发生的更改。该指令需要 ng-bind-html 才能工作,并且您还需要将 ngSanitize 添加到您的模块中。将指令 ck-inline 添加到您的元素和
我也使用 $timeout ,因为我注意到如果我不渲染文本,然后 ckeditor 会以某种方式删除所有弄乱模型的值(这不会发生在非内联选项中)。这是代码。
yourModule.directive('ckInline', ['$sce', '$timeout', function($sce, $timeout){
return{
require : '?ngBindHtml',
scope:{value:"=ngBindHtml"},
link : function(scope, elm, attr, ngBindHtml)
{
$timeout(function()
{
var ck_inline;
elm.attr("contenteditable", "true");
CKEDITOR.disableAutoInline = true;
ck_inline = CKEDITOR.inline(elm[0]);
if (!attr.ngBindHtml)
return;
ck_inline.on('instanceReady', function()
{
ck_inline.setData(elm.html());
});
function updateHtml()
{
scope.$apply(function()
{
scope.value = $sce.trustAsHtml(ck_inline.getData());
});
}
ck_inline.on('blur', updateHtml);
ck_inline.on('dataReady', updateHtml);
});
}
};
}]);