Tôi đang sử dụng điều khiển này: http://blueimp.github.io/jQuery-File-Upload/angularjs.html để tải tệp lên ở góc, khi tệp được tải lên máy chủ của tôi, tôi trả lại url và muốn hiển thị nó cho khách hàng trên gọi lại thành công. Plugin được sử dụng chỉ là một tệp tải lên jquery bình thường nhưng có một trình bao bọc chỉ thị góc được cung cấp mà tôi đang sử dụng.
Đây là cách tôi xác định gọi lại:
$scope.options = {
url: '/api/Client/',
type: 'PUT',
done: function (event, data) {
var scope = angular.element(this).scope();
scope.test = "doesn't work";
scope.$apply(function() {
scope.test = "this doesn't work either";
});
}
};
Các tập tin tải lên tốt, và chức năng thực hiện được gọi là tuy nhiên tôi không thể cập nhật xem. Ban đầu tôi đã cố gắng bằng cách thay đổi phạm vi, sau đó tôi nhận ra rằng tôi sẽ yêu cầu hàm $ apply() nhưng nó không hoạt động.
Tôi cũng đã cố gắng
$scope.options = {
url: '/api/Client/',
type: 'PUT',
done: function (event, data) {
$scope.test = "doesn't work";
$scope.$apply(function() {
$scope.test = "this doesn't work either";
});
}
};
và đó cũng không hoạt động. Tôi không chắc tại sao nó không cập nhật quan điểm của tôi, và khi cuộc gọi được thực hiện chỉ là một sự kiện thành công ajax tôi không thấy cách plugin cụ thể này có thể gây ra bất kỳ vấn đề nào với phạm vi $. Tôi đang sử dụng AngularJs 1.1.5, nhưng tôi cũng đã thử 1.0.7 và đang nhận được cùng một vấn đề.
Khi bạn gọi áp dụng là bạn nhận được một lỗi rằng áp dụng/tiêu hóa đã có trong progess? –
Không, không có lỗi. Nó không làm gì cả. Nếu tôi gọi nó nhiều lần và nhìn vào giá trị của $ scope.test tôi thấy giá trị đã được thiết lập trước đó. Chế độ xem không cập nhật với giá trị đó –
Phiên bản thứ hai thực sự trông giống như nó sẽ hoạt động với tôi, nếu chức năng thực hiện được gọi. –