AngularJS que mostram dados do MongoDB
Índice.js
app.get('/api/dashboard', function (req, res) {
Homepage
.find({}, 'title -_id createdBy allbids.bid endTime')
.exec(function (err, auctions) {
if(err)
res.send(err);
console.log(auctions);
res.json(auctions);
})
});
A consola mostra todos os campos de que preciso.
Depois passo pela frente. Uso a via Angular desta forma:
var app = angular.module('auction', [ 'ngRoute','HomeCtrl','NewAuctionCtrl', 'FollowingAuctionsCtrl', 'MyAuctionsCtrl']);
app.config(function ($routeProvider, $locationProvider)
{
$routeProvider
.when('/', {
templateUrl: 'views/partials/dashboard.html',
controller: 'HomeController'
})
$locationProvider.html5Mode(true);
});
e o meu controlador é este:
angular.module('HomeCtrl', [])
.controller('HomeController',function ($scope, $http) {
$http.get('/api/dashboard').then(function(data) {
console.log(data);
$scope.auctions= data;
})
});
No painel de instrumentos.html
<div class="panel panel-default" ng-controller="HomeController">
<div class="panel-heading">All The Auctions</div>
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item" ng-repeat="auction in HomeController.auctions">
{{auction}}
</li>
</ul>
</div>
Não funciona. Eu preciso apenas para utilizar {{auction.title}}
em vez de {{auction}}
??
2 answers
Assumindo que os seus dados estão a ser obtidos com sucesso a partir do servidor, você pode fazer
<div class="panel panel-default" ng-controller="HomeController">
<div class="panel-heading">All The Auctions</div>
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item" ng-repeat="auction in auctions">
{{auction}}
</li>
</ul>
</div>
</div>
Não precisa de ser um controlador doméstico.leilao. Isto irá colocar todo o objecto do leilão naquele li
, por isso, dependendo do que estás a tentar fazer, podes querer fazer algo como {{auction.title}}
como mencionaste
Uma vez que você tem que declarar usar o HomeController no outtest {[[[0]} que cobre o seu rumo e ui, li, essa área irá ligar o $scope no HomeController automaticamente.
Por isso, basta usar {{auction in auctions}}
. Se tiver outro $scope como $scope.foo = "foo"
no HomeController, pode tentar <div>{{foo}}</div>
dentro do {[4] } para ter a ideia
Se a tua intenção é a segunda, sugiro que uses var app = angular.module('auction',['ngRoute']).config( bla bla )
E no HomeController, use angular.module('auction').controller('HomeController',function ($scope, $http) { bla bla })
para que não tenha de injectar um novo controlador sempre que criar um novo controlador