我正在尝试将组件分成几个文件以用于简单的应用程序,但角度的依赖注入器让我头疼,我真的不知道预期的是什么。
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”会很好。
感谢。
答案 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