повторить заказ по вопросу

0

через ng-repeat Я хочу, чтобы видео было в определенном порядке в соответствии с номером id (от 1 до 5).

<div ng-app="myApp" ng-controller="Ctrl">
    <div ng-repeat="vidObj in videoObjects | orderBy: 'id'">
        <span>{{vidObj.id}}</span>  
    </div>
</div>

Я пытаюсь применить фильтр orderBy, но, видимо, работает неправильно. У вас есть представление о том, что я делаю неправильно? Это JSfiddle с полным кодом.

Заранее благодарю за ваши ответы!

EDIT: Спасибо за ваши ответы, но файл json не может измениться.

  • 3
    Фильтр orderBy требует массив, а videoObjects не является массивом, поэтому orderBy не будет работать
  • 0
    Спасибо! Есть ли у вас решение этой проблемы?
Показать ещё 3 комментария

4 ответа

1
Лучший ответ

Javascript:

angular.module('myApp', [])
    .controller('Ctrl', function($scope) {
        $scope.videoObjects = {
        "Frank": {
          "id": 1
        },
        "Gerard": {
          "id": 2
        },
        "Rein": {
          "id": 3
        },
        "Ida": {
          "id": 4
        },
        "Ellen": {
          "id": 5
        }
      };

 $scope.arr = Object.keys($scope.videoObjects).map(function(k) { return $scope.videoObjects[k] });
console.log($scope.arr);

    });

и HTML

<div ng-app="myApp" ng-controller="Ctrl">
    <div ng-repeat="vidObj in arr | orderBy: 'id'">
        <span>{{vidObj.id}}</span>  
    </div>
</div>

Я обновил вашу скрипку с помощью этого кода. Он работает хорошо.

Вот ссылка http://jsfiddle.net/tirthrajbarot/fc16op6u/39/

  • 0
    Спасибо огромное человеку :)
1

Я думаю, что встроенный фильтр orderBy работает с массивами.

В документации говорится: "Сбор может быть массивом или массивом (например, NodeList, объект jQuery, TypedArray, String и т.д.)".

Проверьте этот пример в документации, которая гласит: "Пример заказа таблицы с помощью ngRepeat".

1

Я изменил ваш Json, и он работает

angular.module('myApp', [])
    .controller('Ctrl', function($scope) {
        $scope.videoObjects = [
        {
            "name": "Frank",
          "id": "1"
        },
        {
            "name": "Gerard",
          "id": "2"
        },
        {
          "name": "Rein",
          "id": "3"
        },
        {
            "name": "Ida",
          "id": "4"
        },
        {
          "name": "Ellen",
          "id": "5"
        }
      ]
    });
  • 0
    С чего вы взяли, что проблема в json?
  • 0
    Файл json не должен меняться
Показать ещё 1 комментарий
-3

Попробуйте использовать json, somthing like:

angular.module('myApp', [])
    .controller('Ctrl', function($scope) {
        $scope.videoObjects = [
         {
          "id": 1,
          "Frank":'name'
        },
         {
          "id": 2,
          "Gerard":'name'
        }
      ];

    });

рабочая скрипка

  • 0
    Я пытался в скрипке, но, видимо, это не работает
  • 0
    Вы можете опубликовать скрипку?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню