2016-04-21 130 views
1

我正在使用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"> 
 
\t \t \t 
 

 
<a ng-href="{{data.FolderPath}}">{{data.FolderPath}}</a> 
 
       
 
\t \t \t \t \t 
 
        
 
       </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', []);
我糾正hwoever現在我有一個白色的屏幕的錯誤,所以我的代碼沒讀什麼是我的JSON文件: { 「FolderPath」:「C:\ Users \ nouri \ Desktop \ test」 } 我該怎麼辦 enter image description here

+0

你不能從異步函數返回。請參閱[如何從異步調用返回響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Tushar

回答

2

好像有2個問題與您的代碼

  1. 您正在加載腳本的順序。加載app.js,然後加載services/myapp.js,然後加入controllers/MainController.js。

    <script src="js/app.js"></script> 
     
        <script src="js/services/myapp.js"></script> 
     
        <script src="js/controllers/MainController.js"></script>

  2. 您的角度模塊的名稱是FolderApp但你必須引用它作爲 '應用'。修改它,因爲

    <body ng-app="FolderApp">

編輯
有一個與你正在使用你的工廠的方式的問題。您應該返回一個包含方法的對象,該方法將調用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

+0

謝謝它幫助了我,現在我又遇到了另一個問題。我編輯我的問題與我有錯誤 – nour

+0

你可以張貼錯誤的提琴手? –

+0

您的工廠實施也存在問題。檢查我的編輯。 –

1

文件的順序很重要......將您的app.js置於頂部,並且您的html中定義的app-name也應該與js相匹配。

1

嘗試加載<script src="js/app.js"></script>其他文件(但角核後)

1

在你定義

<body ng-app="app"> 

的HTML,但在JS使用的是前:

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

變化其中之一2和地點

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

在上面,你應該確定

+0

謝謝我仍然有這個錯誤.. angular.js:11500Error:[ng:areq] http://errors.angularjs.org/1.3.5/ng/areq?p0=MainController&p1=not%20a%20function%2C%20got %20Defined at Error(native) at http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:6:416 at Ob(http://ajax.googleapis .com/ajax/libs/angularjs/1.3.5/angular.min.js:19:393) at pb(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min .js:19:480) – nour

+0

位於http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:75:274 位於http://ajax.googleapis.com/ AJAX /庫/ angularjs/1.3.5/angular.min.js:5 7:112 at r(http://ajax.googleapis.com)(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:7:408) at H(http://ajax.googleapis.com /ajax/libs/angularjs/1.3.5/angular.min.js:56:496) at g(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js :51:299) – nour

+0

at g(http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:51:316)(anonymous function)@ angular.js:11500(匿名函數)@ angular.js:8479k $ apply @ angular.js:14391(匿名函數)@ angular.js:1437e @ angular.js:4138d @ angular.js:1435rc @ angular.js:1455Gd @ angular.js :1349(匿名函數)@ angular.js:25912a @ angular.js:2722c @ angular.js:2992 – nour

1

變化NG-應用= 「應用」 到NG-應用= 「FolderApp」

+0

使用 https://docs.angularjs.org/api/ngMock從文件 –

+0

獲得虛擬數據謝謝你,現在我沒有任何錯誤但是,沒有從我的JSON文件顯示我有一個白色的屏幕 – nour

0

我修復了這個問題,實際上,出於安全原因,AngularJS無法讀取本地json文件。它只能讀取在線的。感謝那些幫助我的人^^

相關問題