Я пытаюсь написать директиву 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
все еще не разрешен. Это возможно?
В зависимости от других директив (например, 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;
...
});
}