2017-03-23 51 views
1

我遇到了AngularJS和MongoDb的交互問題。 我在服務器端使用NodeJS和ExpressJS。我用Mongoose跟Mongo說話。 我剛剛完成了路線。AngularJS顯示MongoDB數據

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

控制檯顯示我需要的所有領域。

然後我通過前端。我用角路線是這樣的:

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

+0

更改爲「拍賣中的拍賣」。在使用$ scope時,您不需要引用控制器。 編輯:然後像你評論得到像{{auction.title}}標題。 – Mickers

回答

2

假設你的數據被成功地從服務器獲取,你可以做

<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。這將使整個拍賣標的成li,所以這取決於你正在試圖做的,你可能要像做{{auction.title}}正如你所提到

+0

我做了你如何說,但它不工作。使用{{auction.title}},它不會向我顯示任何內容,{{auction}}向我展示了一個包含5個元素的數組,其中1個數據,所有這些數據都重疊顯示,其他數據是狀態代碼以及我不知道 – mpeg90

+0

在你的控制器中,你可能需要做$ scope.auctions = data.data;而不是僅僅是$ scope。拍賣=數據; –

0

既然你有申報覆蓋你outtest <div>使用HomeController的是什麼標題和ui,li,該區域將自動綁定HomeController中的$ scope。

所以只需使用{{auction in auctions}}。如果您有其他$範圍像HomeController中$scope.foo = "foo",你可以嘗試<div>{{foo}}</div><div ng-controller="HomeController"裏面的想法

我不知道,如果你想與模塊分離,您的拍賣模塊注入它,有.config()或者如果您只需要HomeController作爲動作的模塊中的控制器之一。

如果你的意圖是第二個,我建議使用var app = angular.module('auction',['ngRoute']).config(bla bla)

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

希望它可以幫助