2017-01-05 9 views
0

В HTMLOrderBy на нг-повтора не работает, несмотря на данные быть массивом

<div ng-controller="homeCtrl as home"> 
<a class="list-group-item" ng-repeat="e in home.events | orderBy:'popularity'"> {{ e.name }}</a> 
</div> 

В контроллере

var vm = this; 

vm.events = [{ 
      "name": "one", 
      "popularity": 1 
     }, { 
      "name": "four", 
      "popularity": 4 
     }, { 
      "name": "two", 
      "popularity": 2 
     }]; 

Я получаю эту ошибку https://docs.angularjs.org/error/orderBy/notarray?p0=%7B%7D

+1

вы используете 'home.events' в своем повторении, но' vm' в вашем контроллере .. вы используете что-то вроде 'controllerAs: home' где-то еще? или если ваш повтор будет использоваться 'vm.events'? – haxxxton

+0

ng-repeat работает, но как только я добавляю orderBy, он дает мне эту ошибку. – bobsim21

+0

Проверьте мой ответ – Sajeetharan

ответ

1

Убедитесь, что вы используете Controller As Синтаксис в поле зрения

<div ng-controller="ListCtrl as home"> 

DEMO

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

 
app.controller("ListCtrl", ["$scope", 
 
    function($scope) { 
 
    var vm = this; 
 

 
    vm.events = [{ 
 
     "name": "one", 
 
     "popularity": 1 
 
    }, { 
 
     "name": "four", 
 
     "popularity": 4 
 
    }, { 
 
     "name": "two", 
 
     "popularity": 2 
 
    }]; 
 
    } 
 

 
]);
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <script data-require="[email protected]" data-semver="1.4.7" src="https://code.angularjs.org/1.4.7/angular.js"></script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script src="script.js"></script> 
 
</head> 
 
<body ng-app='app'> 
 
    <div ng-controller="ListCtrl as home"> 
 
    <a class="list-group-item" ng-repeat="e in home.events | orderBy:'popularity'"> 
 
    {{ e.name }}</a> 
 
    </div> 
 
</body> 
 
</html>

+0

У меня был этот синтаксис, но я забыл его добавить. Извините, не исправление, которое я искал. – bobsim21

0

Моя проблема была что я имеет

vm.events = {}; 

до того, как функция была вызвана, и я исправить ее

vm.events = []; 

и он зафиксировал его.

Спасибо за ответы. Извините, у моего вопроса совсем не был весь мой код:/

 Смежные вопросы

  • Нет связанных вопросов^_^