我正在使用angular-xeditable,这是我的可编辑元素:
<div class="like-pre" editable-textarea="question.answer" e-rows="10" e-cols="40" onbeforesave="validateFaq($data, 'answer')" ng-bind-html="question.answer"></div>
在控制器中,我使用$ sce.trustAsHtml来使question.answer显示为常规HTML而不是原始文本。 HTML可以包含iframe(适用于youtube视频)或img元素。 有效。
问题是,在我更改了有问题的内容之后。通过可编辑元素,IFRAME元素完全消失。版本后IMG元素仍然正确显示。
任何人都知道什么是错的?
答案 0 :(得分:0)
找到解决方案。问题是xeditable只更新模型数据。模型更新后,它通过角度绑定更新可编辑的div元素。未显示iframe,因为新模型内容未签名为受信任。
我曾尝试通过onaftersave中的$ sce.trustAsHtml传递question.answer变量,但它没有做任何事情。那是因为trustAsHtml没有改变任何东西,我想它只是把它标记为可信(不知道它是如何在内部工作的)。
解决方案是添加如下空格:
$sce.trustAsHtml(newQuestion.answer + ' ');
因此,角度发现模型已被更改,并使用新的 - 受信任的html - 内容重新加载editabel div。