對不起,問這樣的事情,但我已經花了幾天來解決這個問題。 但我真的需要幫助。我已經閱讀Understanding Dependency Injection 和其他堆棧問題use $http inside custom provider in app config使用 $注射器 在運行塊也不能在我的代碼中工作。注入由module.provider定義的服務
也許有人在這裏可以幫助我,我也擔心如何註釋我的提供者的注射縮小。
My code in
對不起,問這樣的事情,但我已經花了幾天來解決這個問題。 但我真的需要幫助。我已經閱讀Understanding Dependency Injection 和其他堆棧問題use $http inside custom provider in app config使用 $注射器 在運行塊也不能在我的代碼中工作。注入由module.provider定義的服務
也許有人在這裏可以幫助我,我也擔心如何註釋我的提供者的注射縮小。
My code in
的問題是,當你調用在_getItem
你在 「控制器」 $http
。一個解決辦法是要做到這一點:
this.$get = function($http) {
return {
mainUrl : _mainUrl,
getItem : _getItem,
httpWrapper : $http
};
然後在_getItem
分配(或直接使用的httpWrapper):
var $http = this.httpWrapper;
爲了避免與微小的問題,您可以添加註射該方法$get
:
this.$get = ['$http', function($http) {
這裏更新Plunker:http://plnkr.co/edit/m7oXNolo6iV8Zy1NJ0vx
編輯:我認爲,你想實現的是:
var _getItem = function() {
var _d = null;
console.log(this)
var $http = this.httpWrapper;
var $q = this.qWrapper;
_d = $q.defer();
$http.get(_mainUrl)
.success(function(data) {
console.log(data);
_d.resolve({data: data, x: "efe"});
})
.error(function(status) {
_d.resolve(status);
});
return _d.promise;
};
$q.defer()
允許推遲HTTP調用到控制器,那麼你的控制器上,你必須編輯這個:
facade.getItem().then(function(data){
$scope.myReturn = data;
}
Updated Plunker
:http://plnkr.co/edit/xR1d3KnWhX51jHHZ8t3m
注意:考慮ŧ帽子then
的性質是異步的,因此如果你以後直接使用該變量,它仍然是未定義的
好的謝謝老兄,它的工作原理。但是,你能告訴我再舉一個例子嗎?因爲當我想在本地範圍上創建一個被拒絕的對象時,它已經被取消了。我想要在本地範圍內的1個對手。 –
好的謝謝,我標記。但任何參考?當我嘗試在服務上進行服裝回調(錯誤和成功),並在控制器上調用它(附加到$ scope的響應或錯誤消息)時,我遇到了問題 –
對於$ q和推遲,您可以檢查:http:// lostechies .COM/gabrielschenker/2014/02/04/angularjspart-11-承諾/。 – Michael