关于javascript:导航后设置angular-ui-tinymce编辑器内容

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',

设置优先级并不能真正解决问题。

唯一适合我的方法是在ngModel.$render = function()

之前添加以下代码

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();
        }
    });