Angularjs. Radiobutton по умолчанию

223
05 апреля 2017, 15:51

Код шаблона:

<div class="col-xs-12 choose-meter" ng-if="serviceHeat">
  <span class="item_titles">{{"DICTIONARY.CHOOSE_METER_VALUE" | translate }}</span>
  <div class="radio custom-radio">
    <label class="radio small col-xs-3" ng-repeat="meterUnit in meterUnits">
      <input type="radio" ng-model="mUnit.id" name="meterUnits" ng-value="meterUnit.id" ng-init="calculateMeters(meter)" ng-readonly="pay.innerState === 'confirm'" required/>
       <span class="radio_styled"></span>
       <span class="radio_text">
          {{"DICTIONARY." + meterUnit.id | translate }}
       </span>
    </label>
    <p>
       {{mUnit.id | json}}
    </p>
 </div>
</div>

Кусок из контроллера:

$scope.meterUnits = [{id:'GC'},{id:'KW'},{id:'MW'},{id:'GJ'}];
$scope.mUnit = [];

Необходимо что бы по умолчанию была активна первая кнопка(GC).
Пробовал сделать $scope.mUnit = [{id:'GC'}]; не помогло. Какие еще варианты?

В итоге получилось

 <input type="radio" ng-model="mUnit" name="meterUnits" ng-value="meterUnit" ng-click="calculateMeters(meter, mUnit)" ng-readonly="pay.innerState === 'confirm'" required/>

Контроллер

$scope.meterUnits = ['GC','KW','MW','GJ'];
$scope.mUnit = 'GC';
$scope.calculateMeters = function(meters, meterUnit) {                                   
 if(meterUnit === 'GC'){
                console.log('GC');//TODO: delete
            }
            if(meterUnit === 'KW'){
                console.log('KW');//TODO: delete
            }
            if(meterUnit === 'MW'){
                console.log('MW');//TODO: delete
            }
            if(meterUnit === 'GJ'){
                console.log('GJ');//TODO: delete
            }
}

Вопрос. Почему когда стояло ng-change событие срабатывало только при первых нажатиях на кнопки? когда нажимал второй раз(повторно на ту же кнопку), больше не срабатывало. ng-change срабатывает только когда есть изменения? Почему оно не считает каждый следующий клик, изменением?

Answer 1

$scope.mUnit.id должен содержать значение из ng-value т.е. получаем:

$scope.mUnit = {id:'GC'};

или для универсальности:

$scope.mUnit = {id: $scope.meterUnits[0].id};

Вариант второй

Изменяем html:

<input type="radio" ng-model="mUnit" name="meterUnits" ng-value="meterUnit" ng-init="calculateMeters(meter)" ng-readonly="pay.innerState === 'confirm'" required/>

в js

$scope.meterUnits = [{id:'GC'},{id:'KW'},{id:'MW'},{id:'GJ'}];
$scope.mUnit = $scope.meterUnits[0];
READ ALSO
отправка формы с данными и фото

отправка формы с данными и фото

какая работа с формой которая отправляет данные и фото стоит на клиенте? Валидацию полей и отпраку данных я умею делаю но вот как собрать...

244
Как вычислить интеграл на javascript?

Как вычислить интеграл на javascript?

Необходимо вычислить выражение :

550
Удаление класса внутри родителя

Удаление класса внутри родителя

Использую простенький скрипт для переключения активных элементовНо, столкнулся с проблемой

231