set angular-ui-tinymce editor content after navigation
我正在使用angular-ui-tinymce(最新版本0.0.4,https://github.com/angular-ui/ui-tinymce/blob/master/src/tinymce.js)。
我遇到了无法解决的问题。
在第一页加载时,内容通过ng-model加载到编辑器。
然后,我导航到另一个状态,然后使用编辑器导航回状态。
该值仍然存在于作用域上(我已经检查过),但是由于某种原因,由于我无法确定其原因,该内容未出现在编辑器中。.
这是具有伪指令作为属性的文本区域:
1 | <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没有做任何事情。
1 2 3 4 5 6 7 8 9 10 | 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
简单的解决方法是将优先级定义添加到指令
1 2 3 | return { priority: 10, require: 'ngModel', |
设置优先级并不能真正解决问题。
唯一适合我的方法是在
之前添加以下代码
1 2 3 4 5 6 7 8 9 10 | var stopWatch = scope.$watch(attrs.ngModel, function(newValue){ if (!tinyInstance){ tinyInstance = tinymce.get(attrs.id); } if (tinyInstance) { tinyInstance.setContent(newValue); stopWatch(); } }); |