2013-08-26 42 views
14

Tôi đã thử nghiệm các dịch vụ AngularJS trong bảng điều khiển trình duyệt trong quá trình phát triển để xác minh nhanh chóng. Cách tôi đưa dịch vụ vào bảng điều khiển giống như mô tả trong this question hoặc

var $inj = angular.injector(['myApp']); 
var serv = $inj.get('myService'); 
serv.doSomething(); 

Điều đó hoạt động hoàn hảo với AngularJS 1.0.7. Tuy nhiên, sau khi nâng cấp lên 1.1.5, nó không hoạt động nữa cho các dịch vụ sử dụng dịch vụ $http, mà không có xhr sẽ được gửi.

Tôi đã thử nghiệm tiêm trực tiếp $http, nó cũng không hoạt động. AngularJS changelog dường như không có hồ sơ về vấn đề này. Tôi có thể biết vấn đề ở đây là gì không?

Cập nhật:

Nó có vẻ như AngularJS 1.0.7 phiên bản không nén không hoạt động là tốt. Hiện tại phiên bản làm việc thử nghiệm chỉ là AngularJS 1.0.7 được giảm thiểu.

Nó cũng hoạt động với Uncompressed.

+1

Liệu nó có tác dụng nếu bạn nhận được quyền truy cập vào các dịch vụ '$ rootScope' và gọi '$ rootScope. $ Áp dụng()'? Tôi chạy vào một vấn đề sắp xếp tương tự như ngày hôm trước, và bắt đầu một chu kỳ tiêu hóa là sửa chữa. –

+0

@BrandonTilley Điều đó hoạt động tuyệt vời! Vì vậy, '$ http' được thay đổi thành' $ q' sẽ chỉ được giải quyết trong một chu kỳ tiêu hóa? Tôi nghĩ rằng tôi nên đọc các thay đổi chặt chẽ hơn. Cảm ơn! – PSWai

+0

Vâng, tôi nghĩ vậy. Tôi nghĩ có lẽ tôi đã tưởng tượng nó làm việc mà không có một chu kỳ tiêu hóa, nhưng bạn đã giúp tôi nhận ra tôi không ra khỏi tâm trí của tôi (ít nhất là không vì điều này. :) –

Trả lời

40
$http = angular.element(document.body).injector().get('$http'); 

sau đó

$http.get(...) // or post or whatever 
+2

Yêu thích điều đó! Tôi thậm chí không biết tại sao người hỏi không gán nó như một câu trả lời đúng! –

+0

ah damn thật tuyệt vời! Chúng tôi đã có Marketeers sử dụng Optimizely để chạy thử nghiệm AB và bây giờ không cần phải bao gồm jQuery nặng quá !! – George

Các vấn đề liên quan