Я пытаюсь установить соединение 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"}]
Кажется, у меня отсутствует какая-то конфигурация, позволяющая узлу и угловой связи. Пожалуйста, дайте мне знать, что я делаю неправильно.
То, что вы видите в окне браузера, - это объект 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);
});
};
Проверьте это:
var url = 'http://192.168.59.103/members';
$http.get(url).then(
function(response) {
console.log('success',response)
},
function(data) {
// Handle error here
})