Моя цель - обновить элемент div (его ширину и высоту), который используется для контейнера для моего изображения. Проблема в том, что вид и контроллеры вызываются намного быстрее, чем загружается изображение, а когда он наконец вызывается, представление уже отображено, и я больше не могу устанавливать ширину и высоту. Может быть, мой подход совершенно не так ... Может быть, я должен идти с чем-то еще ... Вот мой тестовый код, который вы можете проверить и понять, что я хочу сделать:Обновить элемент DIV после загрузки изображения с помощью Angular JS
<div ng-controller="c">
<div id={{my_id}} width={{widthOfOutsideWrapper}} height={{heightOfOutsideWrapper}}>
<img ng-src="{{src}}" imageonload />
</div>
</div>
....
app.controller('c', function($scope) {
$scope.src ="https://www.google.com.ua/images/srpr/logo4w.png";
});
...
app.directive('imageonload', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.bind('load', function() {
alert('image is loaded');
scope.widthOfOutsideWrapper= this.width;
scope.heightOfOutsideWrapper= this.height;
scope.my_id = "testing";
});
}
};
});
Вот jsfiddle:
http://jsfiddle.net/2CsfZ/855/
КПП. Я только добавляю изображение один раз на странице, когда он запущен.
Правильный ответ, но немного меньше. Попытайтесь немного откомпоновать ответ с описанием того, почему '$ apply()' здесь требуется. – Duncan
Спасибо за ответ! – pawelforums
@pawelforums Пожалуйста, не могли бы вы принять ответ? –