对不起,问这样的事情,但我已经花了几天来解决这个问题。 但我真的需要帮助。我已经阅读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