发表于: 2017-07-27 00:22:14

1 894


今天完成的事情

  1. 1.改修真院bug
  2. 2.改学渣乐园富文本编辑器bug
  1. 明天计划的事情

1准备回家学习的项目

2 改bug

遇到的问题

  1. 百度富文本编辑器有一个bug,
  2. 当输入的内容结尾为?或者其他需要使用shift键一起按才能打出来的符号时,这些符号并不会自动同步到model上。花了大量的时间排查后发现输入?等其他标点符号时,不会触发umeditor封装的contentchange事件。找到原因后开始解决这个问题。首先看是不是插件的问题,换了官网的插件,没有作用,图图师兄说回家学习的是好的,然后去看回家学习的,发现引用的方式不一样,学渣的是封装好的自定义指令,回家学习的是直接调的umeditor的api,然后现在2种思路,一种是调用api,在提交的时候手动的获取内容再传给后端。另外一种是直接去改自定义指令。先试第一种方法,发现出现了一些莫名其妙的bug,换第二种思路,去看自定义指令吧。嗯,虽然我研究过一段时间的自定义指令,不过这写的都是啥?
//重载ngModel$render方法
ngModel.$render = function () {
if (ctrl.initialized) {
/**
        * 重载ngModel$render方法
        */
       ctrl.editorInstance.setContent(ngModel.$viewValue || '');
ctrl.checkPlaceholder();
}
};

//重载ngModelisEmpty方法
ngModel.$isEmpty = function (value) {
if (!value) {
return true;
}
if (ctrl.initialized) {
return !ctrl.editorInstance.hasContents();
}
};
  1. 没办法,硬着头皮看吧,这段代码应该是初始化,这段代码应该是数据同步,这段代码应该是事件监听。等等,既然有事件监听,那我在监听事件里面加一个数据同步不就好了,再看一下数据同步怎么写,欸,这里好像有一个已经封装好的方法,那么就试试吧:
//监听多个事件
               ctrl.initListener = function () {
ctrl.editorInstance.addListener('contentChange', function () {
scope.$evalAsync(ctrl.updateModelView);

});
ctrl.editorInstance.addListener('focus', function () {
scope.$evalAsync(ctrl.updateModelView);
ctrl.focus = true;
ctrl.checkPlaceholder();

});
ctrl.editorInstance.addListener('blur', function () {
scope.$evalAsync(ctrl.updateModelView);
ctrl.focus = false;
ctrl.checkPlaceholder();
// $rootScope.check()
                   });
};

跑一下代码,成功。蒙对了,yeah!

  1. 收获

  1. 自定义指令是一个大坑



返回列表 返回列表
评论

    分享到