2015-07-29 6 views
3

Я пытаюсь извлечь ниспадающий список перед загрузкой страницы с помощью углового $ http. Я попробовал несколько комбинаций, но продолжают давать ту же ошибку:Получить данные перед загрузкой страницы в angularJS

Ошибка: [$ Инжектор: unpr] Неизвестный поставщик: officeListProvider < - officeList < - myController http://errors.angularjs.org/1.4.3/ $ инжекторной/unpr p0 = officeListProvider% 20% 3C? -% 20officeList% 20% 3C-% 20myController

Мне несколько недель в угловом, поэтому, пожалуйста, прошу прощения в случае каких-либо глупых ошибок.

var myApp = angular.module('myApp',['ngRoute']); 

myApp.config(['$routeProvider',function ($routeProvider) { 
    $routeProvider.when('../../home/goEeUpdateAngular.obj', { 
     templateUrl: '/employee_update_angular.jsp', 
     controller: 'myController', 
     resolve: { 
      officeList: function(officeListFactory) { 
       return officeListFactory.getOfficeList(); 
      } 
     } 
    }); 
}]); 

myApp.factory('officeListFactory', function($http, $window) { 
    $window.alert("Hi"); 
    var factoryResult = { 
     getOfficeList: function() { 
      var promise = $http({ 
       method: 'GET', 
       url: '../../home/goOfficesList.obj' 
      }).success(function(data, status, headers, config) { 
       console.log (data); 
       return data; 
      }); 

      return promise; 
     } 
    }; 

    console.log (factoryResult.getOfficeList()); 
    return factoryResult; 
}); 

myApp.controller('myController',function ($scope,officeList) { 
    $scope.officeListFactory = officeListFactory.data; 
}); 

ответ

0

В контроллере вы должны позвонить только officeList. Вот работающий JSFIDDLE. Я тоже пример webapi вместо вашего url

var myApp = angular.module('myApp',['ngRoute']); 

myApp.config(['$routeProvider',function ($routeProvider) { 
    $routeProvider.when('../../home/goEeUpdateAngular.obj', { 
     templateUrl: '/employee_update_angular.jsp', 
     controller: 'myController', 
     resolve: { 
      officeList: function(officeListFactory) { 
       return officeListFactory.getOfficeList(); 
      } 
     } 
    }); 
}]); 

myApp.factory('officeListFactory', function($http, $window) { 
    $window.alert("Hi"); 
    var factoryResult = { 
     getOfficeList: function() { 
      var promise = $http({ 
       method: 'GET', 
       url: '../../home/goOfficesList.obj' 
      }).success(function(data, status, headers, config) { 
       console.log (data); 
       return data; 
      }); 

      return promise; 
     } 
    }; 

    console.log (factoryResult.getOfficeList()); 
    return factoryResult; 
}); 

myApp.controller('myController',function ($scope,officeList) { 
    $scope.officeListFactory = officeList.data; //changes are made here 
}); 
+0

Спасибо @ Alaksandar, он работал – AVI

+0

Happy to помогите всегда. –

1

Ошибка говорит «officeListProvider» нет или не видно, что вам нужно, чтобы добавить его в качестве зависимости.

Пожалуйста, попробуйте ниже изменения:

var ctrl = angular.module('myApp.controllers', []); 

к

var ctrl = angular.module('myApp.controllers', ['myApp.services']); 

, а также, пожалуйста, используйте один и тот же имя службы он является либо srvOfficeList или officeList, а также проверить ваш завод услуг, не справа - пример: AngularJS : factory $http service

Надеюсь, что это исправит проблему.

Пожалуйста, попробуйте создать CodePen (или аналогичный инструмент) при отправке вопроса, чтобы ответ мог попробовать/зафиксировать там и поделился с вами.

+0

Спасибо Сурья, на основе ваших предложений, я обновил код. Теперь console.log (данные) [см. Выше], печатает записи 1850, как ожидалось, но как я должен подключить его к методу $ routeProvider.resolve(). Я хочу загрузить снимок перед инициализацией страницы. – AVI

+0

загрузите выпадающий список перед инициализацией страницы? что вы имеете в виду? данные находятся на клиентском javascript, и вам нужно импортировать их в свой html с помощью AngularJS Controller - как загрузить данные с разрешения на контроллер, проверьте это: http://odetocode.com/blogs/scott/archive/2014/05 /20/using-resolve-in-angularjs-routes.aspx –

+0

Я хочу получить данные из базы данных до загрузки страницы в угловом формате. См. URL-адрес ниже. http://tech-blog.maddyzone.com/javascript/get-data-page-load-angular. – AVI

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