Контроллеры не загружают файл JSON Angular

0

У меня есть три файла - app.js, controllers.js, services.js. Есть еще несколько других, которые я хочу добавить, если я получу подход к работе. Я вижу код, входящий в секцию angular.module mainApp, затем службы и контроллеры. Однако ошибка не возникает, и данные не возвращаются, и методы контроллера вообще не вызываются (только контроллеры инициализируются из внешнего вида). Я попытался заставить вызов с помощью init(), но не повезло и там. Что я делаю не так?

Вот app.js

var mainApp = angular.module('MainApp', ['test.services', 'test.controllers']); 

Controllers.js

var app = angular.module('test.controllers', []); 
app.controller('TestCtrl', [$scope, 'TestService', function($scope, TestService)

    var promise = TestService.makeHttpRequest(../../src/testFile.json); 

    promise.then(function(data){            
        $scope.results = data;
        console.log($scope.results);
    });
}]);

Не работает. Подход также не получает никаких данных.

var app = angular.module('test.controllers', []); 
app.controller('TestCtrl', [$scope, $http, function($scope, $http){
    $http.get('../../src/testFile.json').then(function(data) {
        $scope.results = data.data;
        console.log(data);
    }); 
}]);

services.js

var appServices = angular.module('test.services', []);

//Does the same thing, but get call moved to services 

Index.html

  <body class="bg-blue mainContainer" ng-app="MainApp">
        <div id="content-container" ng-contoller="TestCtrl" class="container main-container">{{results}}</div>
    <div id="content-container" ng-contoller="MainController" class="container main-container" ng-init="loadResults()">
    </body>
  • 0
    удалите ненужные зависимости test.services и test.controllers, сделайте это []
Теги:
controller

2 ответа

0
Лучший ответ

Ваш testFile.json должен быть доступен вашим HTTP-сервером для формирования ответа.

Также вы не вызываете ваш контроллер из DOM должным образом.

Вот приблизительный пример для вашего html:

<body class="bg-blue mainContainer" ng-app="MainApp">
  <div ng-controller="TestCtrl">
  </div>
</body>

А затем отформатируйте свой JavaScript так:

var mainApp = angular.module('MainApp', ['test.controllers']);

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

app.controller('TestCtrl', function() {
  console.info('TestCtrl');
});
  • 0
    Я использую node.js и открыл http-сервер через командную строку. В index.html код существует, и все JS / CSS загружаются нормально. Как я могу проверить, доступен ли testFile.json сервером? Если я попробую localhost / src / json / testFile.json, я увижу JSON в порядке.
  • 0
    Самый простой способ - найти абсолютное местоположение файла. Ваш каталог src является общедоступным каталогом?
Показать ещё 7 комментариев
1

Это может быть вашей проблемой?

ng-contoller="MainController"

Обратите внимание на отсутствие R в редакции слова contRoller: Btw, обе функции вашего контроллера выглядят нормально для меня. Единственное, что я делаю, - это все как строка в массиве, например ['$ http', function ($ http) {}]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню