AngularJS显示MongoDB数据

我与AngularJS和MongoDb的交互有问题。 我在服务器端使用NodeJS和ExpressJS。 用mongoose,我跟Mongo说话。 我刚刚完成了路线。

index.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); }) }); 

控制台显示我需要的所有字段。

然后我通过前端。 我以这种方式使用Angular路线:

  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); }); 

而我的HomeController是这样的:

  angular.module('HomeCtrl', []) .controller('HomeController',function ($scope, $http) { $http.get('/api/dashboard').then(function(data) { console.log(data); $scope.auctions= data; }) }); 

在dashboard.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> 

它不起作用。 我只需要使用{{auction.title}}而不是{{auction}}

假设您的数据正在成功从服务器获取,您可以这样做

 <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> 

它不需要是HomeController.auctions。 这将把整个拍卖对象放到里面,所以根据你要做的事情,你可能想要像你提到的那样做{{auction.title}}

既然你已经声明使用HomeController来覆盖你的标题和ui,li,那么这个区域就会在HomeController中自动绑定$ scope。

所以只需使用{{auction in auctions}} 。 如果你在HomeController中有另一个$ $scope.foo = "foo"范围,你可以尝试<div ng-controller="HomeController" <div>{{foo}}</div>

我不知道是否要分开模块并将其注入到您的拍卖模块中,该模块具有.config()或者您只需要HomeController成为操作模块中的控制器之一。

如果你的意图是第二个,我build议使用var app = angular.module('auction',['ngRoute']).config( bla bla )

在HomeController中,使用angular.module('auction').controller('HomeController',function ($scope, $http) { bla bla })所以你不必在每次创build新控制器的时候注入新的控制器

希望能帮助到你