Доступ к данным изображения после разрешения ngSrc с помощью директивы AngularJS

0

Я пытаюсь написать директиву angularjs для обработки метаданных EXIF в уже загруженном img.

Желаемое использование:

<img ng-src="{{url}}" my-exif-directive />

Моя директива выглядит довольно простой:

...
restrict: 'A',
link: function(scope, element) {       
    var exifData = EXIF.readFromBinaryFile(/* ... */);
    rotate(parseInt(exifData.Orientation || 1, 10), element);
}
...

Есть ли способ использовать буфер изображения? Когда я его отлаживаю, параметр ng-src все еще не разрешен. Это возможно?

Теги:
angularjs-directive

1 ответ

1

В зависимости от других директив (например, ng-repeat) атрибуты и свойства области не могут быть интерполированы по link. Также можно заметить, что element.attr('attribute-name') не может быть интерполирован, а attrs.attributeName будет.

Как правило, это безопасно:

link: function(scope, element) {       
    $timeout(function () {
        ...
    });
}

Если другие директивы не используют тайм-ауты аналогичным образом, директивная DOM уже существует, а также интерполированные значения.

Поскольку есть привязки, и src может со временем меняться, правильный способ справиться с этим:

link: function(scope, element, attrs) {       
    attrs.$observe('src', function (attr) {
        if (!attr) return;
        ...
    });
}

Ещё вопросы

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