2014-05-23 29 views
5

Wstrzykuję element entityManagerFactory do Angular, ale pojawia się błąd. Odbywa się to w module datakontekstu, podobnie jak w przykładzie Johna Papy. Błąd jest nieznanym dostawcą. Załączam plik entityManagerFactory.js do pliku index.html, ale bez powodzenia. Jakieś pomysły?BreezeJS entityManagerFactory Nieznany dostawca ASP.NET

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 
     }; 
    } 
} 

Odpowiedz

4

Jeśli rozpoczął nowy projekt za pomocą HotTowel.Angular.Breeze wersję 2.2.0, problem masz w obliczu naprawdę może być problem z BreezeProvider, który wstrzykuje EntityManagerFactory.

Jeśli jest to przypadek, powinno być widząc błąd:

Unknown provider: breezeProvider <- breeze <- entityManagerFactory <- datacontext

Aby rozwiązać ten problem, upewnij się, że zostały dodane zarówno „breeze.angular.js” i „breeze.directives.js” do pliku index.html i dodano "breeze.angular" i "breeze.directives" do app.js.

To pozwoli kątowo wprowadzić breezeProvider do entityManagerFactory, co powinno być wtedy możliwe do wstrzyknięcia do datacontext.

Ponadto może się okazać, że brakuje pliku breeze.directives.js z folderu skryptu, a zamiast niego jest tylko plik breeze.directives.validation.js. Wygląda na to, że problem dotyczy pakietu Nuget HotTowel.Angular.Breeze v2.2.0. Możesz to naprawić, instalując Breeze.Angular.Directives v1.3.6 za pomocą Nuget.

PM> install-package breeze.angular.directives

Dodatkowe informacje oraz szczegółowe instrukcje na ten temat można znaleźć na blogu Johna papy na http://www.johnpapa.net/new-breeze-angular-service/

7

Miałem ten sam błąd, rozwiązanie było proste i udokumentowane w John Papas blogu.

W pliku index.html upewnij się, że masz odniesienia do wszystkich wymaganych plików źródłowych i że są one ładowane we właściwej kolejności.

<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> 

Upewnij się, że app.js jest ładowany przed entityManagerFactory.js

Nie zapomnij podać odnośniki do swoich modułów Breeze app.js również.

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

Spot on Roger. Ponieważ zaczynałem od pustego szablonu Hot Towel od Nuget, te moduły 3rd Party nie były zarejestrowane. – SwampyFox

+3

Byłem w tym samym miejscu i śledziłem wraz z wideo PluralSight. W mojej app.js. brakuje "breezeangular" i "breeze.directives". Dzięki –