Значение ng-модели не отображается в <select> - PullRequest
0 голосов
/ 24 мая 2018

У меня есть html как:

<label class="item item-input item-stacked-label" ng-repeat="nl in normativas">
    <select ng-model="nl.idResultado">
        <option value="1">OK</option>
        <option value="2">NOT</option>
        <option value="3"> MAYBE </option> 
    </select>
</label>
<button ng-click="guardarNormativas()"> Guardar</button>

Создать представление

Когда $scope.normativas = [];

Я могу выбрать значение для nl.idResultado, сохраняю содержимое $scope.normativasв моей базе данных, где каждый nl.idResultado сохраняет как 1, 2 или 3.Это все хорошо.

Редактировать представление

Когда я спасаю этот $scope.normativas и отображаю в том же HTML с nl.idResultado = 1 (например), <select> не отображает "OK"в качестве значения по умолчанию.

Значение nl.idResultado правильно получено из базы данных sqlite.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Проблема в том, что числовое значение 1 не равно строковому значению «1».По умолчанию элементы выбора имеют строковое значение, и есть несколько способов обойти это.Как отметил Алексей, вы можете использовать ng-value, но другой способ настройки выбора с нестроковыми значениями - использовать ng-options.Иногда проще просто использовать ng-value, но я поставлю это здесь, чтобы дать вам альтернативу.

angular.module('app', [])
  .controller('ctrl', ($scope) => {
    $scope.optionValues = [{
      value: 1,
      text: 'OK'
    }, {
      value: 2,
      text: 'NOT'
    }, {
      value: 3,
      text: 'MAYBE'
    }];
    $scope.selectedValue = 1;
  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
  <select ng-model="selectedValue" 
          ng-options="option.value as option.text for option in optionValues">
  </select>
</div>
0 голосов
/ 24 мая 2018

Вам нужно использовать ng-value вместо value.Это свяжет это с областью правильно для вас.Вот демо:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.normativas = [
    {"y":1},
    {"y":2},
    {"y":3},
    {"y":1}
  ];
});




  

  {{normativas | json}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...