BreezeJS entityManagerFactory未知提供程序ASP.NET

时间:2014-05-23 23:10:54

标签: angularjs breeze

我正在将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
        };
    }
}

2 个答案:

答案 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/