2013-07-25 23 views
5

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 đề.

+0

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? –

+0

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ị đó –

+0

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. –

Trả lời

11

Được sao chép từ nhận xét của tôi để làm rõ hơn vấn đề là gì:

Tôi đã tìm ra được vấn đề. Khi sử dụng ví dụ của họ, tôi đã có một bản sao của ng-controller (ví dụ của họ được lồng trong bộ điều khiển khác của tôi) và mặc dù cả hai đều đang sử dụng cùng một bộ điều khiển, có vẻ như nó chỉ cập nhật bất cứ thứ gì nằm trong phạm vi điều khiển lồng nhau. Khi loại bỏ thuộc tính ng-controller trùng lặp, tất cả đều hoạt động tốt.

+0

Có cùng vấn đề chính xác. Điều thú vị là các ràng buộc trong phần tử gốc (lần xuất hiện đầu tiên của thẻ ng điều khiển) không được cập nhật. – Joon

+0

Bạn là người giỏi nhất! Tôi đã gặp vấn đề tương tự và loại bỏ trùng lặp điều khiển được sắp xếp mọi thứ. – devTimmy

1

Tôi nghĩ rằng tôi sẽ kêu vang trong quá, như tôi đã dành cả ngày đối phó với vấn đề này.

Đảm bảo rằng trong HTML của bạn, bạn áp dụng bộ điều khiển ng vào trình bao bọc div chứ không phải phần tử ul.