2015-08-11 3 views
1

Я пытаюсь создать раскрывающееся меню, но когда оно загружается, я получаю пустое окно выбора.ngOptions создает пустое раскрывающееся меню

Я использую следующий HTML:

<tr ng-repeat="i in data.suggestions"> 
    <td> 
     <select ng-model="i.selYears" ng-options="selYears for val in selYears"></select> 
    </td> 
</tr> 

С помощью этих данных:

[ 
    { 
     "years": [1, 2, 5] 
    }, 
    { 
     "years": [1, 2, 5] 
    }, 
    { 
     "years": [1, 2, 5] 
    } 
] 

Есть ли что-то не так с моей структуры данных, или это ng-options?

Вот что я хотел бы конечный результат выглядеть следующим образом:

<tr> 
    <td> 
     <select> 
      <option value="1">1 year</option> 
      <option value="2" selected="selected">2 years</option> 
      <option value="5">5 years</option> 
     </select> 
    </td> 
</tr> 
<tr> 
    <td> 
     <select> 
      <option value="1">1 year</option> 
      <option value="2" selected="selected">2 years</option> 
      <option value="5">5 years</option> 
     </select> 
    </td> 
</tr> 
<tr> 
    <td> 
     <select> 
      <option value="1">1 year</option> 
      <option value="2" selected="selected">2 years</option> 
      <option value="5">5 years</option> 
     </select> 
    </td> 
</tr> 
+0

Что вы пытаетесь получить, чтобы показать в вашем списке? –

+0

Я хотел бы, чтобы массив лет, чтобы показать в выпадающем списке –

+0

Вы не называете 'selYears'? – tymeJV

ответ

1

ниже код должен работать

<select ng-options="y.years as y.years for y in selYears" ></select> 

предполагая selYears это свойство на $ объема, например,

$scope.selYears = [ 
    { 
     "years": [1, 2, 5] 
    }, 
    { 
     "years": [1, 2, 5] 
    }, 
    { 
     "years": [1, 2, 5] 
    } 
1

Вы пытаетесь повторить над объектом selYears на уровне области управления, а не ng-repeat уровня.

Вы должны делать что-то вроде следующего, чтобы иметь ng-options за каждый год в детской имущества ng-repeat элемента из years

<select ng-model="i.value" ng-options="year for year in i.years"></select> 

EDIT: Имея данные, как это (и с помощью HTML выше) позволяют начальное значение для каждого списка.

[ 
    { 
    "years": [1, 2, 5], 
    "value": 1 
    }, 
    { 
    "years": [1, 2, 5], 
    "value": 2 
    }, 
    { 
    "years": [1, 2, 5], 
    "value": 5 
    } 
] 
+0

Это не работает, я все равно получаю пустое раскрывающееся меню, и эта ошибка: https://docs.angularjs.org/error/ngOptions/iexp?p0=undefined&p1=undefined –

+0

Я набрал это неправильно изначально, просто изм. –

+0

нормально, это работает сейчас, но почему это создает пустую ценность? –

-1

Вы должны указать имя поля, которое вы хотите отобразить в раскрывающемся меню с вашего JSON данных.

<select ng-model="i.years" ng-options="selYears in i.years"></select> 
1

Html:

<tr ng-repeat="i in data.suggestions"> 
    <td> 
     <select ng-model="i.selYears" ng-options="year for year in i.years"></select> 
    </td> 
    <td> 
     value : {{i.selYears}} 
    </td> 
</tr> 

JS:

$scope.data = { 
    "suggestions" : [ 
     { 
      "years": [1, 2, 5], 
     }, 
     { 
      "years": [1, 2, 5], 
     }, 
     { 
      "years": [1, 2, 5], 
     } 
     ] 
    }; 

http://jsfiddle.net/9ybwpfth/1/

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