JCrop을 AngularJS와 함께 사용하려고합니다. 나는 조금 해결하기 위해 도움을 필요로 다음 지시문이 있습니다AngularJS JCrop 지시문을 수정하는 방법은 무엇입니까?
.directive('imgCropped', function() {
return {
restrict: 'E',
replace: true,
scope: { src:'@', selected:'&' },
link: function(scope,element, attr) {
var myImg;
var clear = function() {
if (myImg) {
myImg.next().remove();
myImg.remove();
myImg = undefined;
}
};
scope.$watch('src', function(nv) {
clear();
if (nv) {
element.after('<img />');
myImg = element.next();
myImg.attr('src',nv);
$(myImg).Jcrop({
trackDocument: true,
onSelect: function(x) {
/*if (!scope.$$phase) {
scope.$apply(function() {
scope.selected({cords: x});
});
}*/
scope.selected({cords: x});
},
aspectRatio: 1,
boxWidth: 400, boxHeight: 400,
setSelect: [0, 0, 400, 400]
});
}
});
scope.$on('$destroy', clear);
}
};
})
문제가 JCrop 올바르게 실제 이미지 크기를 감지하지 않는다는 것입니다 및 나는 trueSize 옵션, 내가 알고있는 유일한 방법을 추가 할 필요가 어떻게 해야할지 콜백에서 Jcrop 호출을 감싸는 것은 꽤 심해 보인다.
또한 onSelect 콜백에서 scope. $ apply를 사용하면 이미 진행중인 $ digest 오류가 발생합니다. 그게 왜?
편집 : 성공적으로 다음 코드로 실제 이미지 크기를 얻을 수 있지만, 그렇게
.directive('imgCropped', function() {
return {
restrict: 'E',
replace: true,
scope: { src:'@', selected:'&' },
link: function(scope,element, attr) {
var myImg;
var clear = function() {
if (myImg) {
myImg.next().remove();
myImg.remove();
myImg = undefined;
}
};
scope.$watch('src', function(nv) {
clear();
if (nv) {
element.after('<img />');
myImg = element.next();
myImg.attr('src',nv);
var temp = new Image();
temp.src = nv;
temp.onload = function() {
var width = this.width;
var height = this.height;
$(myImg).Jcrop({
trackDocument: true,
onSelect: function(x) {
/*if (!scope.$$phase) {
scope.$apply(function() {
scope.selected({cords: x});
});
}*/
scope.selected({cords: x});
},
aspectRatio: 1,
boxWidth: 400, boxHeight: 400,
setSelect: [0, 0, 400, 400],
trueSize: [width, height]
});
}
}
});
scope.$on('$destroy', clear);
}
};
})
작동하지 않는 부분에 대해 놀랍지 않습니까? 실제로 JCrop을 Angular와 함께 사용하고 있습니다.하지만 이렇게하지는 마십시오. img src는 변경되지 않으므로 img 태그에 속성 지시문을 사용하고 있습니다. –
저는 plunkr (http://plnkr.co/edit/phXrGBxpPY7DZjkQmGXd)을 완벽하게 작성했습니다. (의도적으로 엄청난 이미지를 넣었습니다.) 내 응용 프로그램에서 작동하지 않으며 잘못된 이미지 크기가 감지됩니다. 일부 CSS 규칙이 이미지의 스타일을 지정하고 이것이 원인 일 수 있습니까? –
CSS 규칙은 이미지를로드하는 이미지 개체의 방식에 영향을 주어서는 안됩니다. –