AngularJS - 获取注入模块/服务的实例

时间:2014-07-28 20:42:04

标签: angularjs http soap dependency-injection

this post @ yair-tavor中发布了与他的SOAP拦截器模块相关的片段。不幸的是,没有明确而明显的例子来获取创建的“myModule”对象的实例。我已经从该帖子中提供的Fiddle下载了Yair的代码,并将其包含在我正在开发的HTML网页中。对AngularJS世界来说是全新的(并且每分钟学习更多!)我想问一下如何获得该模块/服务的本地实例。

我看到Yair的代码包括:

    /**
     * To be used by angular, this method retrieves new 
     * {{#crossLink "rtv.data.soap-interceptor"}}{{/crossLink}} instance.
     * @method $get
     * @returns {SoapInterceptor}
     * @for myModule.soap-interceptorProvider
     */
    providerInstance.$get = function(){
        return new SoapInterceptor();
    };
}]);

我已将这篇非常有用的SO帖子加入书签,以便进行一些详细的审核,明天: AngularJS: Service vs provider vs factory

所以,我尝试使用以下语法来获取实例,但它似乎返回一个充满空对象的模块,而不是我正在加载的思想模块。 :(尝试使用此模块调用soap.setWSDL返回“TypeError:undefined不是函数”。

    var soapModule = angular.module('myModule.soap-interceptor', [] );

soapModule:  { 
    _invokeQueue: 
        [  ]
    _runBlocks: 
        [  ]
    requires: 
        [  ]
    name: soapModule.soap-interceptor
    provider: null
    factory: null
    service: null
    value: null
    constant: null
    animation: null
    filter: null
    controller: null
    directive: null
    config: null
    run: null
 } 

没有第二个参数也不会调用它,它返回一个错误,说明模块不可用。

    var soapModule = angular.module('myModule.soap-interceptor');

    Error: [$injector:nomod] Module 'myModule.soap-interceptor' is not available! 
    You either misspelled the module name or forgot to load it. If registering a 
    module ensure that you specify the dependencies as the second argument.

那么,我究竟应该如何加载和挂钩Yair的soap-interceptor模块呢?我需要一个有效的非null实例,以便成功执行加载WSDL内容的“setWSDL”方法。

0 个答案:

没有答案