0

我有ckeditor与wiris插件,并且我有ck-editors实例在ng-repeate中,当用户在ck-editor的任何实例上发布任何wiris问题时,该帖子被张贴到拳头实例我想要如果3个ck编辑器的实例在ng-repeat中,用户发布ck-editor的第二个实例与wiris公式,那么这个帖子只应该显示在ck-editor的第二个实例上,目前它只显示在一审。 我的HTMLAngularjs多个ckEditors具有相同的ngModel

 <div ng-repeat="item in items"> 
<form role="form" name="DiscussionForm" novalidate> 
      <input type="text" name="followup" ng-model="followupDis" 
    ck-editor placeholder="Compose" required> 
      <div><button type="submit"ng-click="start()">Post</button> 
      </div> 
     </form> 
</div> 

JS

app.directive('ckEditor', function() { 
     return { 
      require: '?ngModel', 
      link: function(scope, elm, attr, ngModel) { 
       var ck = CKEDITOR.replace(elm[0]); 

       if (!ngModel) return; 

       ck.on('instanceReady', function() { 
        ck.setData(ngModel.$viewValue); 
       }); 

       function updateModel() { 
        scope.$apply(function() { 
         ngModel.$setViewValue(ck.getData()); 
        }); 
       } 

       ck.on('change', updateModel); 
       ck.on('focus', updateModel); 
       ck.on('key', updateModel); 
       ck.on('dataReady', updateModel); 

       ngModel.$render = function(value) { 
        ck.setData(ngModel.$viewValue); 
       }; 
      } 
     }; 
    }); 

我期待在指令我创建的第一个元素var ck = CKEDITOR.replace(elm[0]);实例,所以应该改变。 因此,任何人都可以与wiris共享ckeditor的多个实例的解决方案。

回答

0

我已经找到了通过改变属性的id我们可以解决这个问题。

在JS:

app.directive('ckEditor', function() { 
     var counter = 0, prefix = "followupDiscussionPostReply-"; 
     return { 
      require: '?ngModel', 
      link: function(scope, elm, attr, ngModel) { 

       if (!attr.id) { 
        attr.$set('id', prefix + (++counter)); 
       } 
       // rest of the code 

这些改变固定的倍数ckeditors具有相同ngModel问题对我来说。