2

Не удается получить массив по $resource. Вы можете мне помочь? Когда я использую $http все хорошо

У меня есть ошибка в консоли:

TypeError: undefined is not a function 
at http://127.0.0.1:9000/bower_components/angular-resource/angular-resource.js:597:29 
at forEach (http://127.0.0.1:9000/bower_components/angular/angular.js:327:18) 
at angular.module.provider.$get.Resource.(anonymous function).$http.then.value.$resolved (http://127.0.0.1:9000/bower_components/angular-resource/angular-resource.js:595:19) 
at deferred.promise.then.wrappedCallback (http://127.0.0.1:9000/bower_components/angular/angular.js:11616:81) 
at http://127.0.0.1:9000/bower_components/angular/angular.js:11702:26 
at Scope.$get.Scope.$eval (http://127.0.0.1:9000/bower_components/angular/angular.js:12797:28) 
at Scope.$get.Scope.$digest (http://127.0.0.1:9000/bower_components/angular/angular.js:12609:31) 
at Scope.$get.Scope.$apply (http://127.0.0.1:9000/bower_components/angular/angular.js:12901:24) 
at done (http://127.0.0.1:9000/bower_components/angular/angular.js:8487:45) 
at completeRequest (http://127.0.0.1:9000/bower_components/angular/angular.js:8703:7) 

Я создал завод с методом

coeffsResource.factory("CoeffsResources",['$resource', 

function($resource) { 
    return $resource('/api/:action',{}, { 
    get_all_coeffs: { method:'GET', isArray:false, params: {action: 'getAllRegionCoefficients'} }, 
    save_all_coeffs: { method:'POST', params: {action: 'storeAllRegionCoefficients'} }, 
    get_manufacturer: { method: 'GET', isArray:true, params: {action: 'getAllManufacturers'} }, 
    get_models: { method: 'GET', params: {action: 'getModels'} }, 
    get_classes: {method: 'GET', params: {action: 'getClassesConfig'} }, 
    get_regions: {method: 'GET', params: {action: 'getAllRegions'} }, 
    get_ages_config: {method: 'GET', params: {action: 'getAgesConfig'} }, 
    get_odometer: {method: 'GET', params: {action: 'getOdometersConfig'} }, 
    get_tax_config: {method: 'GET', params: {action: 'getTaxConfig'} } 
    }, {stripTrailingSlashes: false}) 
}]); 

Включить завод в контроллере

angular.module('etachkaEvaluatorFrontendApp') 
    .controller('CoeffCtrl', function($scope, $http, $resource, $q, CoeffsResources) { 

     var coeffsResourcesObject = new CoeffsResources(); 
     coeffsResourcesObject.$get_manufacturer().then(function() { 

     }, function() { 

     }) 
}) 
+0

Пожалуйста, добавьте любое сообщение об ошибке, которое вы получаете. – JackWhiteIII

+0

Содержит блок кода в моем вопросе, это моя ошибка в консоли –

+0

Прошу прощения, я неправильно понял это. Виноват. – JackWhiteIII

ответ

1

Почему вы новичок в одном? Заводы AngularJS не предназначены для работы таким образом. Смотрите AngularJS service docs для получения дополнительной информации

Угловые услуги:

  1. Лениво инстанцирован - Угловая конкретизирует только услугу, когда компонент приложения зависит от него.

  2. Singletons - Каждый компонент в зависимости от службы получает ссылку на единственный экземпляр , сгенерированный фабрикой услуг.

Изменение использования в CoeffCtrl на следующее ... (это также предполагает, что вы правильно загрузили ngResource модуль на более раннем этапе в приложении)

.controller('CoeffCtrl', function($scope, $http, $resource, $q, CoeffsResources) { 
    CoeffsResources.$get_manufacturer().then(function() { 

    }, function() { 

    }) 

Для лучшее понимание поведения фабрики. Я создал две простые демонстрации. Обратите внимание, что они не предназначены для решения ваших проблем в режиме копирования/вставки, но для демонстрации того, что происходит, когда мы делаемфабрикой AngularJS.

JSFiddle Link - демо - правильно

JSFiddle Link - демо - неправильно - TypeError: undefined is not a function

+1

Это тоже не работает ... Когда я смотрю на сеть в devtools, я получаю ответ ... Функция-обработчик не работает (( И я использовал «новый» в другом проекте, это было хорошо ( –

1

Я думаю, что нужно вводить зависимость ngResource.

angular.module('etachkaEvaluatorFrontendApp', ['ngResource']) 
+1

славная находка Я упустил это. У меня есть чувство, что есть несколько вопросов с этим вопросом, и мы определяем их каждый. Обратная связь будет необходима – scniro

+0

Я сделал это ... –

+1

@AndrewMedvedsky сделал что? – Donal

Смежные вопросы