Angular js не получает ответ json от узла js

0

Я пытаюсь установить соединение REST между узлом (промежуточное ПО) и угловым (UI). Однако json отображается в браузере, а не маршрутизируется через угловой контроллер /html

Узел /Express router.js

router.get('/members', function(request, response){
response.header("Access-Control-Allow-Origin", "*");
response.header("Access-Control-Allow-Methods", "GET, POST");
response.setHeader('Content-Type', 'application/json');
var dbdata = [];
var str;
db.get('_design/views555/_view/app_walltime', function (err, body) {
    if (!err) {         
        body.rows.forEach(function(doc) {
            dbdata.push({name: doc.key, walltime:doc.value});
        });
        console.log(dbdata);
        response.json(dbdata);

Угловые контроллеры.js

'use strict';
var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.config(['$httpProvider', function($httpProvider, $routeProvider, $locationProvider) {
    $httpProvider.defaults.useXDomain = true;
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }
]);


phonecatApp.controller('PhoneListCtrl', function ($scope, $http, $templateCache) {
  alert('asdsad');
  $scope.list = function() {
  alert('hereh');
  var url = 'http://192.168.59.103:8072/members';// URL where the Node.js server is running 

 $http.get(url).success(function(data) {
      alert(data);
      $scope.phones = data; 

  });
  };
  $scope.list();
});

html - testangular.js

<html ng-app="phonecatApp">
<head>
<meta charset="utf-8">
<title>My HTML File</title>
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.css">
<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/angular-route/angular-route.min.js"></script>
<script src="js/controllers.js"></script>
</head>
<body ng-controller="PhoneListCtrl">
<div class="container-fluid">
<div class="row">
<div class="col-md-2">
  <ul class="phones">
    <li ng-repeat="phone in phones | filter:query">
      {{phone.name}}
      <!--<p>{{phone.walltime}}</p> -->
    </li>
  </ul>
</div>
</div></div>

В браузере отображается следующее:

[{ "Имя": "app1", "walltime": "1050"}, { "имя": "app2", "walltime": "30"}]

Кажется, у меня отсутствует какая-то конфигурация, позволяющая узлу и угловой связи. Пожалуйста, дайте мне знать, что я делаю неправильно.

  • 0
    @Alberto Альберто - Спасибо. Я тоже попробовал, все тот же json отображается в браузере. Что меня беспокоит, так это то, что предупреждающее сообщение внутри углового контроллера тоже не отображается.
  • 0
    @Kram. Благодарю. Я добавил консольный журнал как в случае успеха, так и в случае неудачи, как показано ниже. Но на консоли ничего не печатается. $ http.get (url) .then (function (response) {console.log ('success', response);}, function (data) {console.log ('erro', response);})
Теги:
express

2 ответа

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

То, что вы видите в окне браузера, - это объект JSON, который является результатом вашего запроса.

С линией $scope.phones = data; , вы просто присваиваете $scope Углового объекта data, фактически не анализируя его. В результате Angular не может понять в директиве ng-repeat что на самом деле {{phone.name}} и {{phone.walltime}}, и строка JSON показана.

Чтобы директива ng-repeat работала должным образом, вам нужно сначала проанализировать объект JSON, обработать его (создать, например, пользовательский объект и присвоить его свойства), а затем назначить его объекту $scope.

Вы можете выполнить синтаксис, используя что-то вроде JSON.parse(data); , Пожалуйста, просмотрите этот вопрос для получения дополнительной информации.

Или даже с помощью функции углового встроенного angular.fromJson(data).

Примером может служить следующее:

$http.get(url).success(function(data) {
      alert(data);
      $scope.phones = angular.fromJson(data); 
  });
  };
  • 0
    Альберто - Спасибо. Я тоже попробовал, все тот же json отображается в браузере. Что меня беспокоит, так это то, что предупреждающее сообщение внутри углового контроллера тоже не отображается.
  • 1
    Благодарю. Это решение действительно работает. Проблема была с моей средой, которая не обновлялась.
Показать ещё 2 комментария
0

Проверьте это:

var url = 'http://192.168.59.103/members';
$http.get(url).then(
    function(response) {
        console.log('success',response)
    },
    function(data) {
        // Handle error here
    })

Ещё вопросы

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