注入由 module.provider 定义的服务
Injecting service which define by module.provider
很抱歉问这样的问题,但我已经花了几天时间来解决这个问题。
但我真的需要帮助。我已经阅读 Understanding Dependency Injection
以及其他堆栈问题 使用
$喷油器
on run block 在我的代码中也不起作用。
也许这里有人可以帮助我,我也很担心如何在我的提供程序上注释注入以进行缩小。
My code in
问题是,当您在 _getItem
中调用 $http
时,您在 "controller" 中。解决方案可能是这样做:
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
的本质是异步的,所以如果你之后直接使用变量,它仍然是undefined
很抱歉问这样的问题,但我已经花了几天时间来解决这个问题。 但我真的需要帮助。我已经阅读 Understanding Dependency Injection 以及其他堆栈问题 使用 $喷油器 on run block 在我的代码中也不起作用。
也许这里有人可以帮助我,我也很担心如何在我的提供程序上注释注入以进行缩小。
My code in
问题是,当您在 _getItem
中调用 $http
时,您在 "controller" 中。解决方案可能是这样做:
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
的本质是异步的,所以如果你之后直接使用变量,它仍然是undefined