2013-08-02 7 views
-1

Я тестирую образец CRUD, используя Angular and Breeze, следующий за образцом проекта ToDo. Но по какой-то причине я получаю сообщение об ошибке Не могу вызвать метод getAll неопределенного. (мой OData размещен на другом сервере LOCALHOST и CORS включена, я тестировал)Угловая с ошибкой Бриз Невозможно вызвать метод неопределенного

Вот мой код:

Main.js:

var app = {}; 

app.adminMuscleGroup = angular.module('WebApp', []); 

DataService:

app.adminMuscleGroup.dataService = (function (breeze, logger) { 

    breeze.config.initializeAdapterInstances({ dataService: "OData" }); 

    var servicename = 'http://localhost:23758/odata/'; 

    var manager = new breeze.EntityManager(servicename); 

    manager.enableSaveQueuing(true); 

    var dataService = { 
     getAll: getAll, 

    }; 

    return dataService; 

    function getAll() { 
     var query = breeze.EntityQuery.from("MuscleGroup").orderBy("Name"); 

     return manager.executeQuery(query); 
    } 



})(breeze, app.logger); 

контроллер:

app.adminMuscleGroup.controller('AdminMuscleGroupCtrl', function($scope) { 
    var dataService = window.app.dataService; 
    var logger = window.app.logger; 

    $scope.items = []; 

    $scope.getAllMuscleGroups = function() { 
     dataService.getAll() 
      .then(querySucceeded) 
      .fail(queryFailed); 
    }; 

    $scope.getAllMuscleGroups(); 

    function querySucceeded(data) { 
     $scope.items = []; 
     data.results.forEach(function (item) { 
      $scope.items.push(item); 
     }); 

     $scope.apply(); 

     logger.info("Fetched all Muscle Groups"); 
    } 

    function queryFailed(error) { 
     logger.error(error.message, "Query failed"); 
    } 

} 

И вот вся ошибка:

ypeError: Cannot call method 'getAll' of undefined 
    at Object.$scope.getAllMuscleGroups (http://localhost:7122/Scripts/app/AdminMuscleGroup/MuscleGroupController.js:10:21) 
    at new <anonymous> (http://localhost:7122/Scripts/app/AdminMuscleGroup/MuscleGroupController.js:15:12) 
    at invoke (http://localhost:7122/Scripts/angular/angular.js:2902:28) 
    at Object.instantiate (http://localhost:7122/Scripts/angular/angular.js:2914:23) 
    at http://localhost:7122/Scripts/angular/angular.js:4805:24 
    at http://localhost:7122/Scripts/angular/angular.js:4384:17 
    at forEach (http://localhost:7122/Scripts/angular/angular.js:137:20) 
    at nodeLinkFn (http://localhost:7122/Scripts/angular/angular.js:4369:11) 
    at compositeLinkFn (http://localhost:7122/Scripts/angular/angular.js:4015:15) 
    at publicLinkFn (http://localhost:7122/Scripts/angular/angular.js:3920:30) angular.js:5754 
(anonymous function) 

ответ

0

Это была глупая ошибка, я изменил эту строку:

var dataService = window.app.dataService; 

:

var dataService = window.app.adminMuscleGroup.dataService; 

Теперь это работает

0

Try впрыснуть DATASERVICE непосредственно к контроллеру

app.adminMuscleGroup.controller('AdminMuscleGroupCtrl', function($scope, dataService) { 
    var dataService = window.app.dataService; // -> delete this 
+0

Теперь я получаю эту ошибку: 'Ошибка: Неизвестный поставщик: dataServiceProvider <- dataService' – hyperN