导航后设置angular-ui-tinymce编辑器内容

时间:2013-11-19 11:14:44

标签: javascript angularjs tinymce angular-ui

我正在使用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只在程序化更改上执行,就像实际编辑文本一样有效..

我仍然无法弄明白,有时会显示值,有时则不会。

2 个答案:

答案 0 :(得分:13)

解决了问题! - 现在......

感谢@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',

答案 1 :(得分:0)

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

唯一对我有用的是在ngModel.$render = function()

之前添加以下代码

&#13;
&#13;
    var stopWatch = scope.$watch(attrs.ngModel, function(newValue){
        if (!tinyInstance){
            tinyInstance = tinymce.get(attrs.id);
        }

        if (tinyInstance) {
            tinyInstance.setContent(newValue);
            stopWatch();
        }
    });
&#13;
&#13;
&#13;