dylike/meta.umeditor

文章插入的时候没问题,文章修改的时候,编辑框没有数据

Closed this issue · 11 comments

你好,
请问插入文章都没有问题,但修改文章的时候,内容load不出来?
和 这个问题 类似 #编辑器初始化在数据返回之前 #

你好,具体流程能描述一下么?

qw1

是这样的。
新增文章的时候,把数据存起来了,
然后要修改这篇文章,就需要把从数据库中读取的数据,放到编辑框中,
但编辑框没有内容
ng-model的是这个变量: artInfo.prob_desc.text。

尝试在ajax获取数据后手动调用$scope.$digest()

也可是尝试用ng-if="some condition utils ajax data arrive", 这样可以保证富文本编辑器是在ngModel赋值以后再初始化的

p11

发现注释掉这一行就OK, 测试了一下,添加和修改的时候都OK

发现未注释updateModelView的时候, ngModel.render 这个方法就没有执行,不知道怎么解释这个现象?

ngModel.$render()是把ngModel值渲染至富文本编辑器的方法,ctrl.updateModelView是把富文本编辑器中的值同步至ngModel的方法,在初始化的时候我统一进行了调用。
如果注释此方法,那么当你的富文本编辑器在初始化时是有值的话,这个值是无法同步在ngModel的!
我建议你还是在你的代码逻辑中在ajax数据获取后手动调用 $scope.$digest()方法!

我不是用的jquery的ajax方法,用的是angular的$http, 这里面不能调用$scope.$digest();
调用后就会报错:$digest already in progress。

有一个很奇怪的现象:调用了 ctrl.updateModelView方法,ngModel.$render()这个方法就不会执行,console.log('render')打印不出来,这也就导致文章重新编辑的时候,从后台读出来的数据没有setContent 进去。 (由于新增的时候内容是空,所以不受影响)
希望您也验证一下。(我用的angular版本是1.5.5)

em2

@A123asdo11 我和你遇到的了一样的问题,我的富文本框加载在modal框中,第一次编辑的时候一切正常,第二次编辑的时候好像editor已经ready了,导致ngModal的$viewValue是空的,整个$scope里面的那个值也被清除了,不知道什么原因
11111
第一次打开模态框见上图,取消modal框之后再次打开
22222
我没有ajax的数据,都是列表页查出来的数据,直接带到模态框的,其他的参数都有,富文本框对应的已经没有了。
----
@dylike 同求助

@A123asdo11 @todtao1002 对这个问题做了处理,不妨使用bower更新一下,声明一下:
我移除了UMEditor的库文件,所以你们bower update之后需要自己再去下载UMEditor的库文件,然后在页面中引入一下

@A123asdo11 @dylike 我修复了这个问题,采用了你们两人的结合方式,首先
if(ngModel.$viewValue) { ngModel.$render(); } else { ctrl.updateModelView; }这一段不能判断,直接改成ngModel.$render(); 因为初始化的场景在angularjs中大多数都是先有模型数据再有view的数据,其次,我使用了dylike提供的 ng-if 延迟加载 富文本框,因为这边存在一个先后顺序问题,因为我是开启模态框以及在模态框里加载富文本框,所以就存在模态框先出现还是富文本框先ready。 但是为什么我第一次打开模态框,一切正常呢?我跟踪了一部分源码,发现在第一次创建editor对象的时候,islangReady是undefind的,utils.loadFile(document, { src: me.options.langPath + me.options.lang + "/" + me.options.lang + ".js", tag: "script", type: "text/javascript", defer: "defer" }, function () { loadPlugins(me) });上下文去load了一些语言包文件,这刚好占用了一部分时间,这时模态框已经加载到富文本框这里,刚好这时富文本框ready。js不是很熟悉,也不知道是不是这个原因。

最后,总结起来就是 ## 模态框或者ajax数据 都要在富文本框ready之前
谢谢@A123asdo11 @dylike

恩,在初始化的时候的确只需要考虑ngModel的赋值,我会再更新一次- -
或者欢迎你提交一个PR @todtao1002 ,我来进行合并