2016-04-14 3 views
0

Я строю форму с использованием углового. в моей форме, есть тип select в качестве тега.Выберите тег, который не работает должным образом с Anuglar

Ниже мой код:

 <div class="form-group" ng-class="{ 'has-error': form.$submitted && form['{{field.id}}'].$invalid }" ng-if="field.type === 'select'"> 
      <select> 
        <div class="" ng-repeat="value in field.values"> 
         <option value="">{{value.title}}</option> 
        </div> 
      </select> 
     </div> 

А вот файл для JSON field.values:

"values": [ 
           { 
            "id": 0, 
            "title": "Not Selected" 
           }, 
           { 
            "id": 1, 
            "title": "Yes" 
           }, 
           { 
            "id": 2, 
            "title": "No" 
           } 
          ] 

Javascript (сделанные изменения):

app.controller ('I129Ctrl' , ['$ scope', '$ http', 'JSONModelsService', функция ($ scope, $ http, JSONModelsService) {

var formData = {}; 

    $scope.groups = []; 
    $scope.sections = []; 
    $scope.fields = []; 

    //below is basically equivalent to routing 
    JSONModelsService.get(['test', 'Valid Passport']) 
     .then(function (response) { 
      console.log(response); 
      // $scope.group = response.data.groups[0]; 
      $scope.groups = response.data.groups; 
      $scope.sections = $scope.groups.sections; 
      $scope.fields = $scope.groups.sections.fields; 
     }); 

В принципе, я сначала проверяю, равен ли field.typeselect. Если это так, я хочу, чтобы значения в выбранном типе вопроса. Однако он не работает, как я себе представляю. Что я делаю не так?

+0

Вы уверены, что Json вы опубликовали это правильно или просто отправили часть Json. я вижу ошибку в JSON it self – Prasad

+0

do change 'ng-class' to' ng-class = "{'has-error': form. $ submitted && form [field.id]. $ invalid}" ', я не делаю Не думаю, что это исправило бы всю проблему. не могли бы вы добавить больше объяснений с 'plunkr/fiddle' –

+0

У меня есть действующий json, но он слишком длинный, чтобы соответствовать здесь. поэтому я просто положил часть этого. – Kahsn

ответ

2

Во-первых, не используйте элемент div в элементе, который не может работать. Вы можете поместить ng-repeat на уровне параметра, но это не сработает, так как у вас нет привязки к ней.

Способом выполнения этого является директива ng-options в теге select.

<select ng-model="valueSelected" ng-options="value as value.title for value in field.values"></select> 

Если вы хотите, чтобы ваш пользователь не мог выбрать/отменить выбор значения. Добавить в выбрать один из следующих вариантов:

<option ng-value="null">-- No value--</option> 
+0

Предполагается, что это (ng-repeat = "значение как value.title в field.values")? Я ничего не вижу. – Kahsn

+0

no as i isaid ng-options Я просто поместил ng-repeat в свой select вместо ng-options. Я отредактировал мой пост, извините за это. – Walfrat

+0

, даже если я перехожу к ng-options, он все равно ничего не показывает. у него есть выбранный тип формы, но пустой – Kahsn

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