1

我试图将组件分成几个文件,但对于一个简单的应用程序,但角度的依赖注入器给我头痛,我真的不知道什么是预期的。依赖注入地狱,预计什么?

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”会很好。

谢谢。

回答

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 
     //.... 
    }; 
}]); 
+0

OK,这是奇怪的。我以为我可以访问控制器中的'services.xrmservice'。谢谢。 –

+0

np。很高兴知道它帮助,谢谢:-) –

0

你虽然它们注入到模块中,你需要给他们的功能,使您可以使用注射模块

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


    }; 
}]);