我正在使用angular-ui-tinymce(最新版本0.0.4,https://github.com/angular-ui/ui-tinymce/blob/master/src/tinymce.js)。
我遇到了一个我无法解决的问题。
在第一页加载时,内容通过ng-model加载到编辑器中。 然后我导航到另一个状态,然后使用编辑器导航回状态。 该值仍然存在于作用域上(我已经检查过了),但由于某些原因,内容没有出现在编辑器中我无法想象..
这是具有指令属性的textarea:
<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甚至都没有运行。 有什么原因吗?
更新
我不认为模型。$ render是相关的,根据我的理解$ render只在程序化更改上执行,就像实际编辑文本一样有效..
我仍然无法弄明白,有时会显示值,有时则不会。
答案 0 :(得分:13)
解决了问题! - 现在......
感谢@alonisser我找到了解决方案。
据我所知,问题正在发生,因为在angularjs指令的优先级中发生了一些变化。
简单修复只是为指令
添加优先级定义return {
priority: 10,
require: 'ngModel',
答案 1 :(得分:0)
设置优先级并不能解决问题。
唯一对我有用的是在ngModel.$render = function()
var stopWatch = scope.$watch(attrs.ngModel, function(newValue){
if (!tinyInstance){
tinyInstance = tinymce.get(attrs.id);
}
if (tinyInstance) {
tinyInstance.setContent(newValue);
stopWatch();
}
});
&#13;