В моем приложении у меня есть такое мнение:angularJS наблюдать за изменение изображений
<div class="r-container" image-crop>
<img id="photo-cropper" src="">
</div>
ЦСИ для изображения настройки в контроллере (после imageuploading в браузер):
$scope.files = files;
var reader = new FileReader();
reader.onload = function(e) {
$('#photo-cropper').attr('src', e.target.result);
};
reader.readAsDataURL(files[0]);
, а затем у меня есть такой директива (может быть, есть немного JQuery стиль, но, скажем, это нормально):
.directive('imageCrop', function() {
return {
restrict: 'EA',
link: function postLink(scope, element, attrs) {
var $image, originalData;
angular.element("#image-crop-modal").on("shown.bs.modal", function() {
console.log('postLink');
$image = angular.element(".r-container > img");
originalData = {};
$image.cropper({
multiple: true,
aspectRatio: 1.5,
data: originalData,
done: function(data) {
console.log(data);
}
});
});
angular.element("#save-cropper").click(function() {
originalData = $image.cropper("getDataURL");
console.log(originalData);
angular.element('#image-crop-modal').modal('hide');
scope.setCroppedData(originalData);
$image.cropper("destroy");
});
}
};
});
и поэтому этот imageCropper является заявл yed only, если в коде зрения я определяю src по умолчанию, когда я изменяю его в контроллере: ничего не происходит - обрезщик не работает: но почему? Как установить его на новом изображении src?
Вы можете показать эту функцию, пожалуйста? scope.setCroppedData (originalData); – micha
Положите директиву на изображение и должен использовать область действия для изображения 'ng-src'. Используйте '$ apply' всякий раз, когда вы меняете область действия со сторонним кодом, поэтому угловой знает, как запустить дайджест – charlietfl
@micha http://fengyuanchen.github.io/cropper/ события отсюда – brabertaser19