$ index, используемый в атрибуте имени textarea, пропущенного через ng-repeat, возвращает $ index в качестве строки в директиве

0

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. Как это сделать? Пожалуйста помоги.

  • 0
    Пожалуйста, предоставьте рабочую скрипку, чтобы посмотреть на
Теги:
ckeditor

1 ответ

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 на одной странице.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню