如何将$ resource注入提供者?

时间:2015-08-18 20:20:00

标签: javascript angularjs dependency-injection angularjs-service angularjs-provider

我继承了以下代码,我需要将$ resource注入服务。我是AngularJS的新手,没有找到非常有用的文档。我尝试过的一切都失败了。有什么想法吗?

(function (angular) {

angular.module('myModule')
    .provider('myService', [myServiceProvider]);

function myServiceProvider() {
    ...
}

感谢。

1 个答案:

答案 0 :(得分:3)

您无法访问提供程序功能中的依赖项,因为在配置阶段运行。您可以通过在提供程序函数中注入$ injector服务来获取它们。

但更好更清洁的方法就是直接在提供者def zoom(self,event): '''This function zooms the image upon scrolling the mouse wheel. Scrolling it in the plot zooms the plot. Scrolling above or below the plot scrolls the x axis. Scrolling to the left or the right of the plot scrolls the y axis. Where it is ambiguous nothing happens. NOTE: If expanding figure to subplots, you will need to add an extra check to make sure you are not in any other plot. It is not clear how to go about this. Since we also want this to work in loglog plot, we work in axes coordinates and use the proper scaling transform to convert to data limits.''' x = event.x y = event.y #convert pixels to axes tranP2A = self.ax.transAxes.inverted().transform #convert axes to data limits tranA2D= self.ax.transLimits.inverted().transform #convert the scale (for log plots) tranSclA2D = self.ax.transScale.inverted().transform if event.button == 'down': # deal with zoom in scale_factor = self.zoom_scale elif event.button == 'up': # deal with zoom out scale_factor = 1 / self.zoom_scale else: # deal with something that should never happen scale_factor = 1 #get my axes position to know where I am with respect to them xa,ya = tranP2A((x,y)) zoomx = False zoomy = False if(ya < 0): if(xa >= 0 and xa <= 1): zoomx = True zoomy = False elif(ya <= 1): if(xa <0): zoomx = False zoomy = True elif(xa <= 1): zoomx = True zoomy = True else: zoomx = False zoomy = True else: if(xa >=0 and xa <= 1): zoomx = True zoomy = False new_alimx = (0,1) new_alimy = (0,1) if(zoomx): new_alimx = (np.array([1,1]) + np.array([-1,1])*scale_factor)*.5 if(zoomy): new_alimy = (np.array([1,1]) + np.array([-1,1])*scale_factor)*.5 #now convert axes to data new_xlim0,new_ylim0 = tranSclA2D(tranA2D((new_alimx[0],new_alimy[0]))) new_xlim1,new_ylim1 = tranSclA2D(tranA2D((new_alimx[1],new_alimy[1]))) #and set limits self.ax.set_xlim([new_xlim0,new_xlim1]) self.ax.set_ylim([new_ylim0,new_ylim1]) self.redraw() 函数内部注入依赖。

<强>代码

$get