ng-options с источником данных объекта

Я изо всех сил пытаюсь понять, как ng-options работает с источником данных. Я прочитал документы и чувствую, что делаю именно то, что требуется, но при попытке у меня все еще возникают проблемы.

<!DOCTYPE html>
<html ng-app="app">
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js">              </script>
    <link rel="stylesheet" href="style.css" />
    <script type="text/javascript">
      angular.module('app', [])
      .controller('IndexCtrl', ['$scope', function($scope) {
        $scope.types = {
          1: "value1",
          2: "value2",
          5: "value3"
        };
      }]);
    </script>
  </head>
  <body ng-controller="IndexCtrl">
    <select ng-model="type" ng-options="k as v for(k, v) in types">
      <option value="">Select Type</option>
    </select>
  </body>
</html>

Я всегда получаю эту ошибку в консоли:

Ошибка:

Ожидаемые ngOptions в форме «выбрать (как метка)? for (ключ,)?значение в наборе (отслеживание по expr)?' но получил «k как v для (k, v) в типах».

Что я делаю неправильно?

См. планкр здесь:

http://plnkr.co/edit/Bl6u4151KyDkxhYrsdCm?p=preview


person colefner    schedule 05.12.2013    source источник


Ответы (1)


Это как-то странно, но вроде пробел нужно ставить после for. Это работает:

<select ng-model="type" ng-options="k as v for (k, v) in types">
  <option value="">Select Type</option>
</select>
person Jayantha Lal Sirisena    schedule 05.12.2013
comment
Вы правы! На самом деле, теперь, когда я присматриваюсь, в угловых документах тоже есть место. docs.angularjs.org/api/ng.directive:select - person colefner; 05.12.2013
comment
Это связано с регулярным выражением, используемым для разбора предложения ng-option. - person Michael Oryl; 21.08.2014
comment
здесь у вас есть пример, как это сделать с предложением select jsfiddle.net/6unbrp1e - person Kris Jaklik; 15.05.2015
comment
@KrisJaklik, в вашем случае источником является массив, а не объект, как просил ОП. - person greenoldman; 23.07.2016
comment
Привет, может ли кто-нибудь сказать мне, почему нам нужно сделать (k, v) в ng-options = k as v для (k, v) в типах, как мы можем сделать, это работа, выполненная путем записи ng-options = k как v для v в типах тоже. - person Himesh Aadeshara; 11.11.2016