如何将第三方库注入angular.js服务

时间:2015-06-05 10:46:25

标签: javascript angularjs requirejs

我在尝试将角度缓存库加载到我的服务时遇到了麻烦。我使用bower为我的项目添加了角度缓存,并成功添加了它。当我在Chrome上调试服务代码时,我在“网络”标签中看到已加载角度缓存:

Name: angular-cache.js
Method: GET
Status: 200
Type: script
Initiator: require.js:1901
Size: 6,5 kb
Time: 16 ms

我有一个config.js文件,我加载了所有的库。此行用于角度缓存:

'angular-cache': '../bower_components/angular-cache/dist/angular-cache',

这是垫片里面的一行:

'angular-cache': ['angular'],

这就是服务:

 define(
    [ 'angular', 'services-module'],
    function(angular, services) {
        services.factory(
          'MyService',
           [
            "$location",
            "$interval",
            "MyOtherService",
            "CacheFactory",
            function($location, $interval, otherService, cacheFactory) {

               var service = {
                    myCachingFunction : function(parameters){

                    }, 
                    getCache : function(cacheId) {

                    }
                }
                return service;
            } ]);
});

这是我得到的错误:

Error: [$injector:unpr] Unknown provider: CacheFactoryProvider

This是angular-cache的github页面。我错过了什么?

2 个答案:

答案 0 :(得分:1)

你试过这个吗,我想这是你的service.js:

define(
['angular', 'services-module'],
function(angular, services) {
    services.factory(
      'MyService',
       [
        "$location",
        "$interval",
        "MyOtherService",
        "CacheFactory",
        function($location, $interval, otherService, cacheFactory) {

在你的app.js中:

define(
['angular', 'angular-cache'],
function(angular) {
    var myApp = angular.module('myApp', [ 'ngResource', 'app.controllers', 'app.directives', 'app.services', 'app.filters', 'app.routes', 'app.interceptors', 'angular-cache' ]);

在config.js中:

    shim: {
      'angular-cache': {
         deps: ['angular']
       }
    }

我猜你正在使用Require with Angular。

答案 1 :(得分:0)

你想要包含像这样的模块:

define(
    [ 'angular', 'services-module', 'angular-cache'],
    function(angular, services, cache) {
...