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新控制器的时候注入新的控制器
希望能帮助到你