Về cơ bản, đây là giải pháp tôi đã sử dụng.
$ apply () chỉ nên được sử dụng bởi các nguồn bên ngoài trong những trường hợp thích hợp.
thay vì sử dụng áp dụng, tôi đã ném cập nhật phạm vi vào cuối ngăn xếp cuộc gọi. Hoạt động tốt như "scope. $ Apply (attrs.imageonload) (true);".
window.app.directive("onImageload", ["$timeout", function($timeout) {
function timeOut(value, scope) {
$timeout(function() {
scope.imageLoaded = value;
});
}
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.bind('load', function() {
timeOut(true, scope);
}).bind('error', function() {
timeOut(false, scope);
});
}
};
}]);