AngularJS 1出厂错误未知的提供商

时间:2016-06-29 05:30:02

标签: angularjs

我试图从json文件中获取数据。

我有一个文件,factory1.js

myApp.factory('mainInfo', [
'$http',
  function($http) {
  return {
    get:  function(){
        $http.get('data.json'); 
    }
}}])

然后我有另一个文件view1.js

'use strict';

angular.module('myApp.view1', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/view1', {
    templateUrl: 'view1/view1.html',
    controller: 'View1Ctrl'
  });
}])

.controller('View1Ctrl', [

  '$scope',
  '$http',
  'mainInfo',

  function($scope, $http, mainInfo) {
    mainInfo.get("data.json")
    .then(function(response) {
        $scope.myWelcome = response.data;
        console.log($scope.myWelcome)
    });
}]);

我有一个文件夹,其中包含每个json,factory和controller文件。

当我运行它时它返回的错误说...

angular.js:13708 Error: [$injector:unpr] Unknown provider: mainInfoProvider <- mainInfo <- View1Ctrl

我哪里错了?

4 个答案:

答案 0 :(得分:2)

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

app.factory('mainInfo', [
'$http',
  function($http) {
  return {
    get:  function(){
        $http.get('data.json'); 
    }
}}])

定义一个变量并将模块分配给该变量并将变量绑定到factory.if你有模块名称myApp将该模块注入myapp.view1模块 像

angular.module('myApp.view1', ['ngRoute','myApp'])

答案 1 :(得分:2)

工作正常。这解决了我希望如此的问题。

 'use strict';

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

    app.config(['$routeProvider', function($routeProvider) {
      $routeProvider.when('/view1', {
        templateUrl: 'view1/view1.html',
        controller: 'View1Ctrl'
      });
    }])


app.factory('mainInfo', 
  function($http) {
  var obj={};
    obj.method =function(){
       return $http.get('tag.json')

}
    return obj;
  })
app.controller('View1Ctrl', [

  '$scope',
  '$http',
  'mainInfo',

  function($scope, $http, mainInfo) {
    mainInfo.method().success(function(response) {
        $scope.myWelcome = response;
    });
}]);

答案 2 :(得分:1)

在Angular模块中注册mainInfo,如果它是一个不同的模块。

view1.js

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

答案 3 :(得分:0)

您尚未将模块分配给变量。

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

然后使用myApp.factory

myApp.factory('mainInfo', [...

请参阅this plunkr以便快速了解。