我正在使用 angular-ui-tinymce(最新版本 0.0.4,https://github.com/angular-ui/ui-tinymce/blob/master/src/tinymce.js)。
我遇到了一个我无法解决的问题。
在第一页加载时,内容通过 ng-model 加载到编辑器。
然后我导航到另一个状态,然后导航回编辑器的状态。
该值仍然存在于范围内(我已经检查过)但由于某种原因我无法确定内容没有出现在编辑器中..
这是以指令为属性的文本区域:
<textarea rows="10" class="form-control" id="desc" ui-tinymce ng-model="valueFromScope"></textarea>
这种变化发生在 AngularJS 从 1.5 更新到 1.2.1 之后。
我认为它与 ngSanitize 有关,但我不确定..
该应用程序中包括了btw angular-sanitize和ngSanitize。
有什么建议吗?
更新
似乎 ngModel.$render 没有做任何事情。
ngModel.$render = function() {
console.log(ngModel);
tinyInstance = tinymce.get(attrs.id);
if (tinyInstance) {
tinyInstance.setContent(ngModel.$viewValue || '');
updateView();
}
};
什么都没有打印出来,甚至没有被定义,这意味着 ngModel.$render 甚至没有运行。
有什么原因吗?
更新
我不认为 model.$render 是相关的,据我所知 $render 只在程序更改时执行,例如实际编辑文本并且有效..
我仍然无法弄清楚,有时显示值有时不显示。
最佳答案
问题解决了! - 现在..
感谢@alonisser,我找到了解决方案。
据我了解,问题的发生是因为 angularjs 指令的优先级发生了变化。
阅读以下:
http://iwang.github.io/html/angular/angularjs/2013/11/04/ngmodel-render-cannot-be-overriden-in-angular-rc3.html
简单的修复只是向指令添加优先级定义
return {
priority: 10,
require: 'ngModel',