My Textarea HTML:
<div data-ng-repeat="(key, contents) in growthEnvData.product_features" class="tile-inner tile-fixed">
<textarea placeholder="Enter Product Pricing" class="form-placeholder features" ng-model="contents.features" rows="1" style="height:150px;" name="features-{{$index}}" ></textarea>
</div>
Угловая директива JS:
app.directive('ckEditorInline', function () {
return {
require: '?ngModel',
link: function (scope, elm, attr, ngModel) {
var eleName = attr.name;
var ck = CKEDITOR.inline(eleName);
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('key', updateModel);
ck.on('dataReady', updateModel);
ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}
};
Когда я получаю attr.name в директиве, он возвращает features- {{$ index}} вместо features- 0. Я хочу, чтобы это было features- 0. Как это сделать? Пожалуйста помоги.
app.directive('ckEditorInline', function ($timeout) {
return {
require: '?ngModel',
link: function (scope, elm, attr, ngModel) {
$timeout(function(){
var ck = CKEDITOR.inline(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('key', updateModel);
ck.on('dataReady', updateModel);
ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}, 2000);
}
}; });
Я попытался запустить код через 2 секунды, установив тайм-аут в качестве быстрого исправления, и теперь он работает нормально. Если у вас есть альтернативное решение, сообщите мне. Проблемы связаны с инициализацией нескольких встроенных ckeditor на одной странице.