2015-10-01 23 views
0

所以我一直在做兩個簡單的Angular應用程序作爲Free Code Camp的一部分,並且我得到了不同的結果。在第一個應用程序中,一切似乎都正常工作。我調用了一個$http.get(),返回了一個對象數組,並且我可以使用ng-repeat(ARRAY中的鍵)用數據填充我的頁面。這種筆可以在這裏找到:http://codepen.io/StephenMayeux/pen/ZbBgapng-repeat在一個應用程序中工作,但不是其他

我的第二個應用程序是幾乎相同的(使API調用,這次維基百科),而是因爲JSONP(而不是CORS)需要得到任何數據,它使用$http.json(),而不是GET從維基百科。長話短說,我能夠解析這些數據並將其推送到一個數組。

而且我有一個很好的對象數組,我應該可以用ng-repeat迭代...但是沒有任何事情發生。這裏是鏈接到鋼筆,或者你可以看看下面的代碼: http://codepen.io/StephenMayeux/pen/WQRawr

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

    app.controller('WikiController', ['$http','$scope', function($http, $scope) { 
    $scope.search = { text: '' }; 
    var api = 'http://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch='; 
    var apiEnding = '&callback=JSON_CALLBACK'; 
    var pageUrl = 'http://en.wikipedia.org/?curid='; 


    $scope.search = function() { 
     var final = []; 
     $http.jsonp(api + $scope.search.text + apiEnding).success(function(data) { 
     var results = data.query.pages 
     angular.forEach(results, function(v,k) { 
      final.push({title: v.title, body: v.extract, page: pageUrl + v.pageid}) 
     }) 
     console.log(final); 

     }); 
    };  
    }]); 

})(); 

<html ng-app="wikipedia"> 

<body ng-controller="WikiController"> 
    <div class="container"> 
    <h1>Wikipedia Search Engine</h1> 
    <form class="form-inline" novalidate> 
     <div class="form-group"> 
     <label class="sr-only" for="searchInWikipedia">Search Wikipedia by using this textbox</label> 
     <input type="text" class="form-control" ng-model="search.text" placeholder="What do you want to learn about today?"> 
     </div> 
     <button type="submit" class="btn btn-primary" ng-click="search()"><span class="glyphicon glyphicon-search"> Search</span></button> 
    </form> 
    <div > 
     <div id="search-results" ng-repeat="key in final"> 
     <h3>{{key.title}}</h3> 
     <p>{{key.body}}</p> 
     </div> 
    </div> 
    </div> 
</body> 

</html> 

我:

1)檢查錯別字。

2)打印到控制檯,我肯定會得到一組對象。 3)只使用Angular,沒有其他類似jQuery的庫可能與我的代碼發生衝突。

任何想法或指針?

+1

似乎最後的變量不是範圍變量! –

回答

1

這裏是筆:http://codepen.io/anon/pen/gambae

$scope.final = []; 

您需要添加到範圍要在屏幕上顯示的東西。

+0

你是對的!我嘗試了一切,甚至在我發佈之前閱讀了$ scope文檔。有趣的是我沒有在我的第一個應用程序中使用$ scope。 –

+0

在Angular 1中,就是這樣,你如何將變量從控制器綁定到視圖中......還有一種語法爲「controller as」的方法,但是在Angular 1世界中 - $ scope是最具爭議性的... – JanisP

相關問題