Я пытаюсь создать front-end на основе AngularJS для базового приложения PHP. Я создаю объект JSON с запросом PHP и MySQL. JSON экспортируется правильно, и данные отображаются, если я использую встроенный объект с директивой ng-init
. Но когда я монтирую файл Json.php
на контроллере, что-то кажется неправильным, потому что я не вижу никаких данных.
Это ссылка на пример. Здесь контроллер находится под </body>
.
Это главная страница
<html ng-app="myApp"> <head> <title></title> </head> <body> <div style="direction: ltr"> </div> <h1>תוצאות שאלון</h1> <div class="table-responsive" ng-controller="ContentCtrl"> <table class="table" id="results" > <thead> <tr> <th>id</th> <th>q1</th> <th>q2</th> <th>q3</th> <th>textarea</th> <th>phone</th> <th>name</th> </tr> </thead> <tbody> <tr ng-repeat="answer in answers.data"> <td>{{answer.id}}</td> <td>{{answer.q1}}</td> <td>{{answer.q2}}</td> <td>{{answer.q3}}</td> <td>{{answer.textarea}}</td> <td>{{answer.phone}}</td> <td>{{answer.name}}</td> </tr> <?php/* $table = new Results(); $table->allrows(); */?> </tbody> </table> </div> <script src="http://code.jquery.com/jquery.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> <script type="text/javascript" src="js/js.js"></script> <!--<script src="js/controllers.js"></script>--> <script type="text/javascript">
это контроллер:
var myApp = angular.module('myApp', []); myApp.controller('ContentCtrl', ['$scope', '$http', function ($scope, $http) { $http.get('json.php') .success(function(data) { $scope.answers = data; console.log('test'); }); }]);
Может быть, модуль должен быть на другой странице? Я задал этот вопрос раньше. Может быть, это может помочь.
JSON, на который отвечает ваш json.php
файл, – это всего лишь массив объектов. Но ваш ng-repeat
выполняет итерацию по answers.data
, которая не определена. Вы должны перебирать answers
так как это массив.
<tr ng-repeat="answer in answers">
Если по какой-то причине вы не хотите изменять ng-repeat
, вы можете изменить свой контроллер, чтобы он обертывал data
в виде объекта следующим образом:
$scope.answers = { data: data };