2016-12-01 7 views
2

Я не могу установить значение по умолчанию для моего выбранного элемента, зная, что я должен получить значение по умолчанию из json(), которое выбрало значение для отображения другой формы ,Установить значение по умолчанию для выбранной ng-модели и управлять ng-change

В моем контроллере я установить выбранный таким образом:

.controller('attributeFacetCtrl', function ($scope, tabsService, $location, contentService, attribute) { 

    $scope.attribute = attribute; 

    $scope.types = [{ 
     val: 'terms' 
    }, { 
     val: 'continuous' 
    }]; 

    $scope.selected = $scope.attribute.facet.data.type; 

    $scope.isTerms = false; 

    $scope.validateFrom = function() { 

     var chk = $scope.selected.val; 

     if (chk === 'terms') { 
      $scope.isTerms = true; 
     } else { 
      $scope.isTerms = false; 
     } 
    }; 
}) 

результат $ scope.attribute.facet.data.type = "термины"

И на мой взгляд, я есть этот

<div class="form-group"> 
         <label class="wk-field-label"> 
          <i class="icon-asterisk wk-prefield wk-mandatory"></i> 
          Type 
         </span> 
         </label> 
         <select class="wk-field-input" ng-model="selected" 
           ng-options="typeValue as typeValue.val for typeValue in types" 
           ng-change="validateFrom()" 
           required></select> 
        </div> 
        <div ng-if="isTerms" ng-repeat="orders in attribute.facet.data.order"> 
         <div> 
          <label class="wk-field-label"> 
           <i class="icon-asterisk wk-prefield wk-mandatory"></i> 
           Order 
           </span> 
          </label> 
        </div> 
</div> 
+0

Что такое вывод 'console.log ($ scope.attribute.facet.data.type);'? –

+0

console.log outpus: terms – kyserslick

ответ

1

проблема в том, что вы устанавливаете $scope.selected в строку («условия»), но когда вы загружаете до ng-options его загружая его объектами, имеющими свойство val.

Если вы не обязательно должны $scope.selected быть объектом, то вы можете изменить ваш ng-options на следующее:

ng-options = "typeValue.val as typeValue.val for typeValue in types" 

Если вам требуется $scope.selected быть объектом с val собственности, то вам нужно будет чтобы правильно установить его начальное значение и не устанавливать его в строку, чтобы установить выбор по умолчанию.

+0

Вы правы, имея typeValue.val в моих ng-вариантах работает – kyserslick

0

Так как вы хотите, чтобы установить элемент на строку, изменить select элемент к следующему:

<select 
    class="wk-field-input" 
    ng-model="selected" 
    ng-options="typeValue as typeValue.val for typeValue in types" 
    ng-change="validateFrom()" 
    required 
> 
</select> 

Вы можете прочитать больше о том, как использовать as здесь: https://docs.angularjs.org/api/ng/directive/ngOptions

Надежда, что помогает!

+0

Я обновил свой вопрос _typeValue as_ не меняет его, выбранные по умолчанию значения по-прежнему пусты в моем представлении – kyserslick

+0

Жесткий код '$ scope.selected' как '{val: 'terms'}', а затем попробуйте использовать его как «термины» - один из этих двух должен работать, но я уверен, что это был оригинальный способ, который я предложил. Жесткое кодирование, по крайней мере, устранит один из них :) –

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

  • Нет связанных вопросов^_^