Несколько ckEditors Angularjs имеют одинаковые ngModel
У меня есть ckeditor с подключаемым модулем wiris, и у меня есть экземпляры ck-editors в ng-repeat, когда пользователь публикует любой вопрос wiris в любом экземпляре ck-editor, это сообщение публикуется в первом экземпляре ck-editor. Я хочу, если 3 экземпляры ck-редакторов в ng-repeat, пользователи публикуют 2-й экземпляр ck-редактора с уравнением wiris, тогда этот пост должен отображаться только во 2-м экземпляре ck-редактора, в настоящее время он отображается только в 1-м экземпляре.Мой HTML:
<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]);
так что должно измениться. Таким образом, любой может поделиться решением для нескольких экземпляров ckeditor с wiris.
1 ответ
Я нашел, изменив идентификатор атрибута, который мы можем решить этот.
в 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
эти изменения исправили, у нескольких ckeditor была та же самая проблема ngModel для меня.