Angularjs-Fehler: [filter:notarray] array Erwartet, aber bekam: {}, mit einem filter, der auf ein ng-repeat

Ich bin versucht zu füllen eine html-Tabelle mit einer eckigen Anfrage an eine API mit der ng-repeat-Direktive. Die html-Seite lädt dann zuerst der Antrag gestellt wurde, um die Daten zu erhalten, die füllt die Tabelle aus, wenn die Antwort zurückgegeben wird.
Wenn ich einen filter hinzufügen, um die ng-repeat-Direktive die Tabelle wird aufgefüllt und die filter-Funktionen, aber in meinem chrome-browser-Konsole bekomme ich folgende Fehlermeldung:

Fehler: [filter:notarray] array Erwartet, aber bekam: {}
http://errors.angularjs.org/1.4.3/filter/notarray?p0=%7B%7D
bei REGEX_STRING_REGEXP (eckige.js:68)
zu eckig.js:18251
am Objekt.fn (app.js:185)
bei Scope.$bekommen.Scope.$digest (eckige.js:15683)
bei Scope.$bekommen.Scope.$gelten (eckige.js:15951)
bei bootstrapApply (eckige.js:1633)
am Objekt.invoke (eckige.js:4450)
bei doBootstrap (eckige.js:1631)
bei bootstrap (eckige.js:1651)
bei angularInit (eckige.js:1545)

Habe ich eine Probe bis auf plunker, der Fehler wird auch angezeigt in der Konsole hier, wenn die Probe führen:

http://plnkr.co/edit/J83gVsk2qZ0nCgKIKynj?

Html:

<!DOCTYPE html>
<html>
<head>
  <script data-require="angular.js@*" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular.js"></script>
  <script data-require="angular-route@*" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular-route.js"></script>
  <script data-require="angular-resource@*" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular-resource.js"></script>
  <script type="text/javascript" src="example.js"></script>
  <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" rel="stylesheet" />
</head>
<body ng-app="inventoryManagerApp">
  <h3>Sample - Expected array error</h3> Filter
  <input type="text" id="quoteListFilter" class="form-control" ng-  model="search" />
  <div ng-controller="QuoteController">
    <table class="table table-bordered">
      <tbody>
        <tr>
          <th>Specification</th>
          <th>Quantity</th>
        </tr>
        <tr ng-repeat="quote in quotes | filter:search">
          <td>{{quote.SpecificationDetails}}</td>
          <td>{{quote.Quantity}}</td>
        </tr>
      </tbody>
    </table>
  </div>
</body>
</html>

Javascript:

var inventoryManagerApp = angular.module('inventoryManagerApp', [
  'ngResource',
  'quoteControllers'
]);

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

quoteControllers.controller("QuoteController", ['$scope', 'filterFilter', 'quoteRepository',
  function($scope, filterFilter, quoteRepository) {

     $scope.quotes = quoteRepository.getQuoteList().$promise.then(
            function (result) {
                $scope.quotes = result;
            },
            function () {
            }
        );
  }
]);

inventoryManagerApp.factory('quoteRepository',
  function($resource) {
    return {
      getQuoteList: function() {
        return    $resource('http://drbsample.azurewebsites.net/api/Quotes').query();
      }
    };
  });

Scheint es zu sein, etwas zu tun, mit den Daten zu füllen, die ng-repeat-Direktive nicht sofort auf die Seite laden. Wenn ich ersetzen Sie das $ - Bereich.zitiert mit den json-Daten auf die Seite laden, anstatt anfordern von Daten von der API nicht den Fehler.

InformationsquelleAutor stonefree | 2015-08-25

Schreibe einen Kommentar