2016-02-03 67 views
0

我在這個學習方面還是個新手,雖然我已經做對了,但是我無法在第一個應用中輸出水果。 我正在使用ng-repeat =「body.fruits中的食物」輸出,但沒有任何顯示。有任何想法嗎?ng-repeat不輸出結果

<!DOCTYPE html> 
<html ng-app="app"> 
    <head> 
    <title>Bootstrap 3</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

    <script type="text/javascript" src="angular.min.js"></script> 
      <script type="text/javascript" src="app.js"></script> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 
    <link href="index.css" rel="stylesheet" type="text/css"> 
    <link rel="stylesheet" href="css/reset.css"> 
    </head> 

    <body ng-controller="bodyController as body"> 
    <div class="navbar navbar-inverse navbar-static-top"> 
     <div class="container"> 
     <div class="navbar-header"> 
      <button class="navbar-toggle" data-toggle="collapse" data-target=".navHeaderCollapse"> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      </button> 
      <a href="#" class="navbar-brand">Tech Site</a> 
     </div> 
     <div class="collapse navbar-collapse navHeaderCollapse"> 
      <ul class="nav navbar-nav"> 
      <li><a href="#">Specs and Features</a></li> 
      <li><a href="#">How To Videos</a></li> 
      <li class="dropdown"> 
       <a href="#" class="dropdown-toggle" data-toggle="dropdown">Social Media <b class = "caret"></b></a> 
       <ul class="dropdown-menu "> 
       <li><a href="#">Twitter</a></li> 
       <li><a href="#">Facebook</a></li> 
       <li><a href="#">Google+</a></li> 
       <li><a href="#">Instagram</a></li> 
       </ul> 
      </li> 
      <li></li> 
      </ul> 
     </div> 
     </div> 
    </div> 

    <div class="container">  
     <div class="row"> 
     <div class="col-md-2 " ></div> 
     <div class="col-md-8 " > 
     <div id="appleFacts" ng-repeat= "foods in body.fruits"></div> 

     </div> 
     <div class="col-md-2 " ></div> 
     </div> 
</div> 

    <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> 
    </body> 
</html> 

App.js

(function() { 

    var app = angular.module('app', []); 
    app.controller("bodyController", function(){ 
     this.foods = fruits; 
     }); 
    var fruits = [ 
     { name: 'Apples', calories: 65, totalFat: '0g', Saturated_Fat: '0g', Cholestrol: '0mg', 
      sodium: '1mg', totalCarbs: '17g', dietaryFiber: '3g', Sugar: '13g', 
      Protein: '0g', vitaminA: '1%', vitaminC: '10%', Calcium: '1%', Iron: '1%' 
     }, 
     { name: 'Oranges', price: 5.95 }, 
     { name: 'Pineapple', price: 3.95 } 
    ]; 
    })(); 
+0

如果在重複div中沒有​​模板,您希望它打印什麼? -.- – Nonemoticoner

+0

在控制器中聲明「食物」,並試圖在視圖中循環「水果」。查看不知道'水果'是什麼,因爲他們沒有在範圍內定義 – charlietfl

回答

0

在你App.js文件,你需要利用$ scope模塊。這就是你如何從HTML文件中的js文件訪問屬性。因此,它看起來像:

app.controller("bodyController", function($scope){ $scope.foods = fruits;

然後在html:

<div id="appleFacts" ng-repeat= "food in foods"> {{food.name}} </div>

而且你可以通過上述的語法,這些對象訪問任何其他屬性:{{food.calories }}或{{food.price}}等。

+0

感謝這工作 – user6680

0

您需要定義您的控制器,包括它的角應用模塊中。

(function() { 

    var app = angular.module('app', []); 

    var BodyController = function() { 
    var vm = this; 

    vm.fruits = [ 
     {name: 'Apples',price:1.00}, 
     {name: 'Oranges',price:2.00}, 
     {name: 'Pineapples',price:3.00}, 
     ]; 
    }; 

    app.controller('BodyController', BodyController); 
})(); 

一旦你的,你再需要模板中繼邏輯ng-repeat

<body ng-controller="BodyController as vm"> 

... 

<div id="appleFacts" ng-repeat="food in vm.fruits"> 
    <span>{{food.name}}</span> 
</div> 

看到這裏的工作例如:http://plnkr.co/edit/TDh0Oes4KGeMrC7vNq3h?p=preview