2016-04-22 7 views
3

Я пытаюсь заполнить выпадающие значения, используя ng-repeat в Sightly. Узел AEM сохраняет мои данные в виде массива String, и я могу его правильно извлечь, но не смог заполнить их, поскольку он выдает ошибку «? undefined:undefined ?».Ng-repeat in Sightly

Мой код:

<select name="${validation.elementName}" id="${validation.elementName}" ng-model="${validation.elementName}" ng-change="${properties.clickfunction}"> 
     <option ng-repeat="opt in ${properties.options}" value={{opt}}>opt</option>     
     </select> 

И выход:

output:

Что мне не хватает? Как Sightly совершенно для меня совершенно. Я буду очень благодарен за любую помощь, чтобы улучшить этот код или указать на мою ошибку.

+0

Есть ли особая причина не использовать 'ng-options'? –

+0

Как мой проект имеет разную команду для HTML, разработки и приложения, я в состоянии построить компоненты на основе comps, предоставляемых командой html :(Вы можете сказать, что это печальная архитектура. –

ответ

1

Прежде всего, вам нужно обернуть данные, которые вы перейти на value в кавычках, так что это должно быть так:

value="{{opt}}" 

Во-вторых, это выглядит, как вы передаете значения без одинарные кавычки, и они не распознаются как строки. Посмотрите на этот plunker:

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

Вы можете видеть, что первые ng-repeat работы, как и ожидалось, но второй выдает ошибку в консоли и ничего не отображается. В принципе, вам просто нужно поставить кавычки вокруг каждой строки в вашем массиве.

1

Спасибо @Victor за ваш ответ.

Пожалуйста, найдите мои выводы ниже.

  1. value = "{{opt}}" была моей ошибкой при вставке кода в stackoverflow.
  2. $ {properties.options} возвращает строковый массив.
  3. ng-repeat, похоже, правильно разбирается в соответствии с этим выходом. this
+0

Похоже, вы передаете значения без одинарных кавычек, и они не распознаются как строки. Взгляните на этот плункер: http://plnkr.co/edit/A2gZJbvVV9ozHloLkF4B?p=preview Вы можете видеть, что первый 'ng-repeat' работает, как ожидалось, но второй вызывает ошибку в консоли и ничего не отображает. В принципе, вам просто нужно помещать кавычки вокруг каждой строки в вашем массиве. –

+1

Спасибо @Victor. Вышеупомянутая работа отлично работала. Можете ли вы отредактировать свой первый ответ или разместить выше как ответ, чтобы я мог отметить как правильный. –