错误:[$injector:undef] 提供程序必须从工厂方法返回值$get



我正在尝试学习AngularJS。我跟着教练,我写的代码和他一样。但是我得到了一个Error: [$injector:undef] Provider 'eliteApi' must return a value from $get factory method..当我在 web 中搜索此错误时,它被告知我必须返回一个函数或一个对象。我想我正在这样做。我的工厂声明如下:

angular.module("eliteApp",["ionic"])
.factory('eliteApi', function() {
  function eliteApi(){
    var leagues = JSON.parse('"name": "Spring Fling Tournament 2014","id": 2009,"homeScreen": "* 5th Grade Championship - 7:30m MAC 3n* 6th Grade Championship - 6:30pm MAC 4n* 7th Grade White Championship - 7:30pm MAC 4n* 7th Grade Green Championship - 7:30pm MAC 2n* 8th Grade Championship - 7:30pm MAC 1n* 9th Grade Championship - 8:30pm MAC 4n* 10th Grade Championship - 8:30pm MAC 1n* 11th Grade Championship - 8:30pm MAC 3","rulesScreen": null');
      function getLeagues(){
        return leagues;
      }
    return {
      getLeagues : getLeagues 
   };
  };
  
})
.controller('LeaguesCtrl', [ '$scope','eliteApi', function($scope, eliteApi) {
  function LeaguesCtrl(eliteApi){
    var vm = this ;
    var leagues = eliteApi.getLeagues();
    };
}])

任何帮助不胜感激...

factory更改为:

.factory('eliteApi', [function() {
 return {
          getLeagues : function(){
                           var leagues = JSON.parse({"name": "Spring Fling Tournament 2014","id": 2009,"homeScreen": "* 5th Grade Championship - 7:30m MAC 3n* 6th Grade Championship - 6:30pm MAC 4n* 7th Grade White Championship - 7:30pm MAC 4n* 7th Grade Green Championship - 7:30pm MAC 2n* 8th Grade Championship - 7:30pm MAC 1n* 9th Grade Championship - 8:30pm MAC 4n* 10th Grade Championship - 8:30pm MAC 1n* 11th Grade Championship - 8:30pm MAC 3","rulesScreen": null});
                           return leagues;
                       }
        }
}])

看看这是否有效。

更新

您的变量league不是适当的JSON。将其更改为

 var leagues = JSON.parse({"name": "Spring Fling Tournament 2014","id": 2009,"homeScreen": "* 5th Grade Championship - 7:30m MAC 3n* 6th Grade Championship - 6:30pm MAC 4n* 7th Grade White Championship - 7:30pm MAC 4n* 7th Grade Green Championship - 7:30pm MAC 2n* 8th Grade Championship - 7:30pm MAC 1n* 9th Grade Championship - 8:30pm MAC 4n* 10th Grade Championship - 8:30pm MAC 1n* 11th Grade Championship - 8:30pm MAC 3","rulesScreen": null});

你忘记了{}.同时删除引号 ' .

@Sourabh-谢谢你的帮助,这是解决方案:

.factory('eliteApi', function() {
 var leagues1 = JSON.stringify({"name": "Spring Fling Tournament 2014","id": 2009,"homeScreen": "* 5th Grade Championship - 7:30m MAC 3n* 6th Grade Championship - 6:30pm MAC 4n* 7th Grade White Championship - 7:30pm MAC 4n* 7th Grade Green Championship - 7:30pm MAC 2n* 8th Grade Championship - 7:30pm MAC 1n* 9th Grade Championship - 8:30pm MAC 4n* 10th Grade Championship - 8:30pm MAC 1n* 11th Grade Championship - 8:30pm MAC 3","rulesScreen": null});
var leagues = JSON.parse(leagues1);
    return {
      getLeagues :    function getLeagues(){     
   return leagues;
        }
    };
  })
  
 .controller('LeaguesCtrl', [ '$scope','eliteApi', function($scope, eliteApi) {
    var leagues = eliteApi.getLeagues();
       var leagueData = eliteApi.getLeaguesData();
  
})

最新更新