2016-04-21 5 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-return-the-response-from-an-asynchronous-call) – Tushar

ответ

2

Там, кажется, 2 номера с кодом

  1. Заказ, в котором вы загружаете скрипты. Загрузите app.js, за которыми следуют services/myapp.js, а затем контроллеры/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">

EDIT
Существует проблема с тем, как вы используете ваш завод. Вы должны вернуть объект, содержащий метод, который вызовет API и вернет обещание $ http. Попробуйте что-то вроде этого:

завод

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 вверху, а также ваш app-name, определенный в вашем html, должен совпадать с js.

1

Попробуйте загрузить <script src="js/app.js"></script> перед другими файлами (но после углового ядра)

1

в HTML вы определили

<body ng-app="app"> 

Но в 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 % 20undefined при ошибке (родной) по адресу 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/ Аякса/ЛИЭС/angularjs/1.3.5/angular.min.js: 5 7: 112 at r (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:7:408) в 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

в g (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js:51:316) (анонимная функция) @ 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

изменение нг-приложение = "приложение" к нг-приложение = "FolderApp"

+0

use https://docs.angularjs.org/api/ngMock, чтобы получить фиктивные данные из файла –

+0

Спасибо, у меня нет никакой ошибки. Однако ничего не отображается из моего json-файла. У меня белый экран – nour

0

Я исправил проблему, и по соображениям безопасности, AngularJS не может читать локальные файлы json. Он читает только онлайн. Спасибо за тех, кто мне помог ^^

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