Я пытаюсь создать выпадающий список с помощью нг-опций:Object.keys() не работает в нг-вариантах
<!DOCTYPE html>
<html ng-app="m1">
<head>
<script src='https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js'></script>
</head>
<body ng-controller="c1">
<div>
Sort1
<select ng-model="sortKey1">
<option value="bookId">By Id</option>
<option value="bookTitle">By Title</option>
<option value="cost">By Cost</option>
</select>
</div>
<div>
Sort2
<select ng-model="sortKey2" ng-options="x for x in Object.keys(books[0])">
</select>
</div>
<div>
Sort3
<select ng-model="sortKey3" ng-options="x for x in bookKeys">
</select>
</div>
</body>
<script type="text/javascript">
var m1 = angular.module("m1", []);
m1.controller('c1',function($scope)
{
$scope.books = [
{
"bookId": 101,
"bookTitle": "Angular JS",
"cost":375,
},
{
"bookId": 102,
"bookTitle": "Instant AngularJS Starter",
"cost":150,
},
{
"bookId": 103,
"bookTitle": "Ng-Book: The Complete Book on AngularJS",
"cost":4657,
}];
console.log(Object.keys($scope.books[0]));
$scope.bookKeys = Object.keys($scope.books[0]);
});
</script>
</html>
Я пытаюсь получить значение выпадающего из ключей объекта перечисляется путем вызова Object.keys()
на объект, а затем используя результирующий массив в ng-options
.
Я пытаюсь создать эффект case 1. Моя попытка случай 2 не работает, однако аналогичная вещь реализована в случай 3 работает.
Может кто-нибудь сказать причину, почему case 2 не работает?
Отлично! Но почему 'Object.keys()' не работает? –
Вы обнаружите, что угловая поддержка функций javascript внутри выражения иногда ограничена. Кажется, это один из этих случаев. – Lex
Можете ли вы добавить это в ответ? Кроме того, я добавил что-то к вашему ответу; просто проверьте, правильно ли это, потому что я не специалист по угловым измерениям. –