未捕捉错误:[$ injector:modulerr]&未捕获的ReferenceError:未定义app

时间:2016-04-21 13:34:33

标签: javascript html css angularjs angular-services

我正在使用AngularJS 1.3.5,我正在尝试从json文件中获取信息。 这是我的代码: HTML文件:

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script>
<script src="js/controllers/MainController.js"></script>
<script src="js/services/myapp.js"></script>
<script src="js/app.js"></script>
<body ng-app="app">

<div ng-controller="MainController">

            
                <div ng-repeat="content in contents">
			

<a ng-href="{{data.FolderPath}}">{{data.FolderPath}}</a>
                
					
                    
                </div>
            
       
</div>
</body>
</html>

Javascript文件: MainController.js

app.controller('MainController', ['$scope', 'myapp', function($scope, myapp) {
  myapp.success(function(data) {
    $scope.FolderPath = data;
  });
}]);

myapp.js

app.factory('myapp', ['$http', function($http) { 
  return $http.get('C:\Users\nouri\Desktop\configFile.json') 
            .success(function(data) { 
              return data; 
            }) 
            .error(function(err) { 
              return err; 
            }); 
}]);

最后是app.js

var app = angular.module('FolderApp', []);
我纠正了错误,因为我现在有一个白色屏幕所以我的代码没有读取我的json文件中的内容:     {       “FolderPath”:“C:\ Users \ nouri \ Desktop \ test”     } 我该怎么做enter image description here

6 个答案:

答案 0 :(得分:2)

您的代码似乎有2个问题

  1. 您要加载脚本的顺序。加载app.js,然后加载services / myapp.js,然后加载controllers / MainController.js。

    &#13;
    &#13;
        <script src="js/app.js"></script>
        <script src="js/services/myapp.js"></script>
        <script src="js/controllers/MainController.js"></script>
    &#13;
    &#13;
    &#13;

  2. 角度模块的名称是FolderApp,但您已将其引用为&#39; app&#39;。将其更改为

    &#13;
    &#13;
        <body ng-app="FolderApp">
    &#13;
    &#13;
    &#13;

  3. 修改
    您使用工厂的方式存在问题。您应该返回一个包含方法的对象,该方法将调用API并返回$ http promise。尝试这样的事情:


    app.factory('myapp', ['$http', function($http) { 
       return {
        getJson: function() {
           return $http.get('C:\Users\nouri\Desktop\configFile.json');
        }
      }
    }]);
    

    <强>控制器

    app.controller('MainController', ['$scope', 'myapp', function($scope, factory) {
      factory.callApi()
        .then(function(data) {
          $scope.FolderPath = data;
        });
    }]);
    

    看看这个fiddler

答案 1 :(得分:1)

文件的顺序很重要......将您的app.js置于顶部,并且您的html中定义的app-name也应与js匹配。

答案 2 :(得分:1)

尝试在其他文件之前加载<script src="js/app.js"></script>(但在角核之后)

答案 3 :(得分:1)

你定义的html中的

<body ng-app="app">

但在你正在使用的js中:

var app = angular.module('FolderApp', []);

更改2中的一个并放置

<script src="js/app.js"></script>

在顶部,你应该没问题

答案 4 :(得分:1)

将ng-app =“app”更改为ng-app =“FolderApp”

答案 5 :(得分:0)

我解决了这个问题,实际上出于安全考虑,AngularJS无法读取本地json文件。它只读在线的。谢谢那些帮助我的人^^