我正在将entityManagerFactory注入Angular,但是我收到了一个错误。正如John Papa的例子一样,这在datacontext模块中完成。错误是未知的提供者。我在index.html文件中包含了entityManagerFactory.js文件但没有成功。有什么想法吗?
function () {
'use strict';
var serviceId = 'datacontext';
angular.module('app').factory(serviceId, ['common', 'entityManagerFactory', 'breeze', 'logger', datacontext]);
function datacontext(common) {
var $q = common.$q;
var service = {
getPeople: getPeople,
getMessageCount: getMessageCount
};
}
}
答案 0 :(得分:7)
我有同样的错误,解决方案很简单,并在John Papas博客中记录。
在index.html文件中,确保您引用了所有必需的源文件,并确保以正确的顺序加载它们。
<link href="content/breeze.directives.css" rel="stylesheet" />
<script src="scripts/breeze.debug.js"></script>
<script src="scripts/breeze.angular.js"></script>
<script src="scripts/breeze.directives.js"></script>
<script src="scripts/breeze.saveErrorExtensions.js"></script>
<script src="scripts/breeze.to$q.shim.js"></script> <!-- Needed only if you are using to$q -->
<script src="app/app.js"></script>
...
...
<script src="app/services/entityManagerFactory.js"></script>
确保在entityManagerFactory.js
之前加载了app.js.不要忘记在app.js中包含对breeze模块的引用。
var app = angular.module('app', [
// Angular modules
'ngAnimate', // animations
'ngRoute', // routing
'ngSanitize', // sanitizes html bindings (ex: sidebar.js)
// Custom modules
'common', // common functions, logger, spinner
'common.bootstrap', // bootstrap dialog wrapper functions
// 3rd Party Modules
'breeze.angular', // configures breeze for an angular app
'breeze.directives', // contains the breeze validation directive (zValidate)
'ui.bootstrap' // ui-bootstrap (ex: carousel, pagination, dialog)
]);
答案 1 :(得分:4)
如果您使用HotTowel.Angular.Breeze版本2.2.0启动了一个新项目,那么您遇到的问题实际上可能是BreezeProvider的问题,即entityManagerFactory注入的问题。
如果是这种情况,您应该看到错误:
未知提供者:breezeProvider&lt; - breeze&lt; - entityManagerFactory&lt; - datacontext
要解决此问题,请确保已将“breeze.angular.js”和“breeze.directives.js”添加到index.html,并将“breeze.angular”和“breeze.directives”添加到app .js文件。
这将允许angular将breezeProvider注入entityManagerFactory,然后可以将其成功注入到datacontext中。
此外,您可能会发现您缺少脚本文件夹中的breeze.directives.js,而只有breeze.directives.validation.js。这似乎是HotTowel.Angular.Breeze v2.2.0 Nuget包的一个问题。您可以使用Nuget安装Breeze.Angular.Directives v1.3.6来解决此问题。
PM&GT; install-package breeze.angular.directives
有关此问题的更多信息和详细说明,请访问John Papa的博客http://www.johnpapa.net/new-breeze-angular-service/