Проблема с кареткой в angular

379
04 февраля 2017, 10:33

Добрый день! Есть директива, которая оборачивает input, добавляет к input некий атрибут и затем компилирует этот элемент.

directive('formGroup', function($compile) {
        return {
            templateUrl:"dir_form_group.html",
            restrict: 'E',
            transclude: true,
            scope:{
                staticVal: "="
            },
            link: function (scope, element, attributes) {
                   var $model = $('[ng-model]', element);
                   $model.attr('attr', '{{attr}}');
                   $compile($model)(scope.$parent);
            }
        }
    })
<form-group static-val = "{'title':'Field 1'}">
    <input type="text" class="form-control" ng-model = "objVar.var">
</form-group>

Проблема заключается в том, что если ng-model присвоена переменная, как свойство объекта, например objVar.var то начинается проблема с кареткой. Если я в середине текста начинаю что-то вводить каретка сразу перелетает в конец текста.

А если ng-model присвоена обычная переменная var, то такой проблемы не наблюдается.

Посмотреть пример можно в plnkr.

Как можно решить эту проблему?

Answer 1

Из-за перекомпиляции элемента в link значение обновляется.
То же самое можно сделать без $compile:

function (scope, element, attributes) {
  var attr = $parse('attr')(scope.$parent);
  $('[ng-model]', element).attr('attr', angular.toJson(attr));
}
READ ALSO
Как экранировать слеш в JS

Как экранировать слеш в JS

Всем приветПомогите пожалуйста

1125
Проблема JavaScript не читается

Проблема JavaScript не читается

Есть некая проблема, для меня очень весомаяЕсть таблица которая обновляется poll-запросом каждые 5 секунд, вcё прекрасно работает

464
открыть папку на FTP и выделить файл

открыть папку на FTP и выделить файл

Добрый деньИз базы данных Moodle на сервере пытаюсь получить доступ к FTP и выделить (подсветить) нужный мне файл

405