javascript - ng-repeat 在一个应用程序中有效,但在另一个应用程序中无效

标签 javascript angularjs

作为免费代码营的一部分,我一直在开发两个简单的 Angular 应用程序,但得到的结果好坏参半。在第一个应用程序中,一切似乎都工作正常。我进行 $http.get() 调用,返回一个对象数组,并且我可以使用 ng-repeat (ARRAY 中的键)来填充我的包含数据的页面。该笔可以在这里找到:http://codepen.io/StephenMayeux/pen/ZbBgap

我的第二个应用程序实际上是相同的(进行 API 调用,这次是使用 Wikipedia),但它使用 $http.json() 而不是 GET,因为 JSONP (而不是 CORS)是从维基百科获取任何数据所必需的。长话短说,我能够解析这些数据并将其推送到数组中。

我有一个很好的对象数组,我应该能够使用 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)。

有什么想法或指示吗?

最佳答案

这是一支笔:http://codepen.io/anon/pen/gambae

  $scope.final = [];

您需要将要在屏幕上显示的内容添加到范围中。

关于javascript - ng-repeat 在一个应用程序中有效,但在另一个应用程序中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897636/

相关文章:

javascript - 变量的值不反射(reflect) ng-view

javascript - 使用边界矩形获取 d3 元素的高度/宽度时如何考虑比例

javascript - TypeError : $(. ..).SetHeight 不是函数

javascript - webapi 后端与纯 javascript 前端,安全

javascript - Angular 在 View 中使用字符串作为范围属性名称

javascript - Dropzone.js 最大文件大小单位

javascript - 媒体查询在 IE8 中不起作用

javascript - textContent 返回未定义

javascript - Handlebars 获取最后一项索引

javascript - Angular 1.6.4 如何检测组件的无绑定(bind)属性的变化