Có thể là một trường hợp phổ biến mà chúng ta cần hiển thị thông báo lỗi/thành công cho người dùng sau khi cập nhật/tạo một số dữ liệu, làm thế nào chúng ta có thể thực hiện nó trong AngularJS?
Tôi muốn thêm cuộc gọi lại nhưng không thể tìm thấy giải pháp. Sử dụng $ http.post(). Success(). Error() hoạt động, nhưng tôi tự hỏi liệu tôi có thể làm điều đó với tài nguyên API $ lever cao hơn không.
Hoặc, chúng ta nên viết chỉ thị hoặc sử dụng $ watch()?
Cảm ơn sự giúp đỡ của bạn trước.
30
A
Trả lời
50
Actions từ lớp Resource thể được thông qua thành công và lỗi callbacks giống như cấp dưới $ http dịch vụ
- HTTP GET "lớp" Hành động: Resource.action ([tham số], [thành công], [lỗi])
- hành động "class" không được phép: Resource.action ([tham số], postData, [success], [error])
Hành động không nhận tiền được bắt đầu bằng $
.
Vì vậy, bạn có thể làm điều này
User.get({userId:123}, function(u, getResponseHeaders){
// this is get's success callback
u.abc = true;
u.$save(function(u, putResponseHeaders) {
// This is $save's success callback, invoke notification from here
});
});
Edit: đây là another example from a previous plunker. Yêu cầu get sẽ thất bại vì nó yêu cầu một tệp json không tồn tại. Cuộc gọi lại lỗi sẽ được chạy.
someResource.get(function(data){
console.log('success, got data: ', data);
}, function(err){
alert('request failed');
});
5
Với phiên bản AngularJS mới nhất, bạn có thể có một cái nhìn vào $interceptors
mà là một phần của $httpProvider
.
Sau đó, bạn có thể đánh chặn TẤT CẢ các yêu cầu trước khi gửi đi hoặc sau phản hồi.
angular.module('app').config(function($httpProvider){
$httpProvider.interceptors.push(function($q) {
return {
'request': function(config) {
console.log('I will send a request to the server');
return config;
},
'response': function(response) {
// called if HTTP CODE = 2xx
console.log('I got a sucessfull response from server');
return response;
}
'responseError': function(rejection) {
// called if HTTP CODE != 2xx
console.log('I got an error from server');
return $q.reject(rejection);
}
};
});
});
Lưu ý rằng bạn phải trả lại config
hoặc response
để làm cho nó làm việc.
Trong trường hợp rejection
, bạn cần phải trả lại từ chối hoãn lại để có được $http.get().error()
vẫn hoạt động sau khi bị chặn.
Các vấn đề liên quan
- 1. angularjs $ callce cấp tài nguyên $ hoặc gọi lại sau
- 2. Dịch vụ AngularJS không gọi lại gọi lại lỗi trên phương thức save()
- 3. làm thế nào để làm cho một trang bên máy chủ với angularjs $ tài nguyên?
- 4. Làm thế nào để gọi phương thức tĩnh trong PowerShell
- 5. Tôi làm cách nào để thêm gọi lại vào phương thức .apply()?
- 6. Làm cách nào để chuyển các tham số cho phương thức gọi lại jQuery $ .getJSON?
- 7. Làm cách nào để chuyển các tham số cho phương thức gọi lại JQuery $ .getJSON?
- 8. Không thể sử dụng các phương thức "lớp" cho các cuộc gọi lại trong JavaScript
- 9. Làm thế nào để gọi phương thức didSelectRowAtIndexPath với UITapGestureRecognizer?
- 10. $ gọi lại tài nguyên (lỗi và thành công)
- 11. Làm thế nào để gọi một phương thức từ phương thức khác trong Mục tiêu C?
- 12. Làm thế nào để thêm phương thức sử dụng metaclass
- 13. Làm thế nào để viết các bộ điều khiển có thể kiểm tra với các phương thức riêng trong AngularJs?
- 14. Làm cách nào để xác định phương thức nào được gọi trong phương thức?
- 15. Làm thế nào để gọi các phương thức quy định tại ApplicationController trong các mô hình
- 16. Python phương pháp tĩnh - làm thế nào để gọi một phương thức từ phương pháp khác
- 17. Làm thế nào để tự động gọi các phương thức accessor trong Ruby
- 18. Các cuộc gọi phương thức trong EL
- 19. Mô hình ghi đè trong đá quý, thêm gọi lại và phương thức
- 20. tài nguyên gọi lại làm mới trang node.js hai lần?
- 21. Làm thế nào để thêm khối bình luận vào các phương thức trong Eclipse?
- 22. AngularJS tài nguyên không đặt Content-Type
- 23. phương thức __doPostBack được gọi như thế nào? Phương thức gọi điện ở đâu?
- 24. Làm cách nào để sử dụng phương thức lớp làm chức năng gọi lại?
- 25. AngularJS $ tiêu đề tùy chỉnh tài nguyên $
- 26. Làm thế nào để tải các tài nguyên hoặc tài sản phục vụ GLWallpaper
- 27. Có thể để cho công việc Angularjs với các phương pháp nguyên mẫu và các biến
- 28. Làm cách nào để gọi phương thức siêu đẳng
- 29. Làm thế nào để tôi có được macro scala để thay thế một phương thức gọi
- 30. Làm cách nào để tạo các Phương thức Nguyên mẫu (như JavaScript) trong C# .Net?
Rất cám ơn! Câu hỏi tiếp theo là làm thế nào để bọc dữ liệu vào dữ liệu biểu mẫu? giải pháp trong [bài đăng này] (http://stackoverflow.com/questions/12190166/angularjs-any-way-for-http-post-to-send-request-parameters-instead-of-json) dường như không hoạt động cho các phương thức tài nguyên (có thể làm việc với $ http.put). thanks – Edward
comment = Comment.save ($ scope.newComment, (response) -> console.log ("Comment submitted."))) cũng hoạt động. – mikeborgh
Định dạng cho các hành động không nhận được là Resource.action ([tham số], postData, [thành công], [lỗi]) .. Nhưng trong ví dụ của bạn nó khác u. $ Save (function (u, putResponseHeaders) {.. ......... – Aakash