依赖注入地狱,有什么期望?

时间:2016-06-16 15:15:54

标签: javascript angularjs dependency-injection angularjs-service

我正在尝试将组件分成几个文件以用于简单的应用程序,但角度的依赖注入器让我头疼,我真的不知道预期的是什么。

Unknown provider: servicesProvider <- services <- maincontroller

我得到的错误。

app.js

//Application definition with injected dependencies
var app = angular.module('leadcapacity', ['services', 'utils', 'customfilters', 'controllers']);

services.js

var services = angular.module('services', []);

services.service('xrmservice',
[
    '$http', function($http) {

        var oDataUrl = Xrm.Page.context.getClientUrl() + '/XRMServices/2011/OrganizationData.svc/';
        var service = {};

        service.query = function(entitySet, query) {
            return $http.get(oDataUrl + entitySet + '?' + query);
        };

        return service;
    }
]);

controllers.js

var ctrls = angular.module('controllers', ['utils', 'services']);

ctrls.controller('maincontroller',
    function ($scope, services, utils) {



    };
});

index.html

中的包含顺序
<script src="service.js"></script>
<script src="controllers.js"></script>
<script src="app.js"></script>

对我来说很好看。我知道这可能不是组织事情的最佳方式,但首先获得“Hello world”会很好。

感谢。

2 个答案:

答案 0 :(得分:1)

  

控制台中出现的错误消息清楚地表明,services   依赖性不存在于模块中。

您在maincontroller控制器工厂函数中注入了错误的服务名称,基本上您尝试注入services(模块名称)而不是xrmservice(服务名称)

function ($scope, services, utils) {

应该是

function ($scope, xrmservice, utils) {

其他

请遵循DI的内联数组注释,因为您已经在xrmservice服务JS文件中使用了相同内容,因此将来您不需要返回并在您面对javascript时更改它缩小相关问题。

<强>控制器

ctrls.controller('maincontroller', [ '$scope', 'xrmservice', 'utils',
    function ($scope, xrmservice, utils) {

         //code goes here
         //....
    };
}]);

答案 1 :(得分:0)

虽然您已将它们注入模块,但您需要将它们提供给该功能,以便您可以使用注入的模块

# Django imports.
from django.apps import AppConfig
import comments

class CommentConfig(AppConfig):
    name = 'comments'

    def ready(self):
        """
        Perform initialization tasks.
        """
        from .models import CommentMixin
        comments.CommentMixin = CommentsMixin