через 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
не может измениться.
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>
Я обновил вашу скрипку с помощью этого кода. Он работает хорошо.
Я думаю, что встроенный фильтр orderBy работает с массивами.
В документации говорится: "Сбор может быть массивом или массивом (например, NodeList, объект jQuery, TypedArray, String и т.д.)".
Проверьте этот пример в документации, которая гласит: "Пример заказа таблицы с помощью ngRepeat".
Я изменил ваш 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"
}
]
});
json
не должен меняться
Попробуйте использовать json, somthing like:
angular.module('myApp', [])
.controller('Ctrl', function($scope) {
$scope.videoObjects = [
{
"id": 1,
"Frank":'name'
},
{
"id": 2,
"Gerard":'name'
}
];
});
orderBy
требует массив, аvideoObjects
не является массивом, поэтомуorderBy
не будет работать