angularjs ngModel не выбирает параметр при выборе ввода

Работает ли ngModel по-разному для ввода текста и выбора? Элемент управления select не выбран, чтобы отразить исходное значение модели.

Когда я меняю значение select, input и currentUser.field также меняются, но если я изменяю значение входного текста на другую клавишу, ничего не происходит для выбора.

{{currentUser.field}} // show correct field field key (number) val

// ng-model works => show correct field key (number) val
<input ng-model="currentUser.field" type="text" /> 

// <option value="?" selected="selected" label=""></option> is selected
<select ng-model="currentUser.field" 
   ng-options='item.key as item.value for item in currentUser.collections.field '>
</select>

// only works with input text and {{currentUser.field}}
 <button ng-click='currentUser.field = 305'>select field (int)</button>
 <button ng-click='currentUser.field = "305"'>select field (string)</button>

person ericsicons    schedule 16.06.2015    source источник
comment
item.key это число или строка? currentUser.field это число или строка?   -  person tymeJV    schedule 16.06.2015
comment
Я пробовал в любом случае, начальный item.key (int) currentUser.field (int)   -  person ericsicons    schedule 16.06.2015


Ответы (1)


Ваш код должен просто работать, если вы не устанавливаете значение currentUser.field, которого нет в ваших параметрах:

var app = angular.module('app', []);

app.controller('myController', function($scope) {
  $scope.currentUser = {
    collections: {
      field: [{
        key: '1',
        value: 'one'
      }, {
        key: '2',
        value: 'two'
      }, {
        key: '3',
        value: 'three'
      }]
    }
  };
  $scope.currentUser.field = "2";
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<div ng-app='app' ng-controller='myController'>
  <h3>expression</h3>
  {{currentUser.field}}
  
  <h3>input</h3>
  <input ng-model='currentUser.field' type='text'>
  
  <h3>select</h3>
  <select ng-model='currentUser.field' ng-options='item.key as item.value for item in currentUser.collections.field'></select>
  
  <h3>buttons</h3>
  <button ng-click='currentUser.field="305"'>305</button>
  <button ng-click='currentUser.field="1"'>1</button>
</div>

person dting    schedule 16.06.2015
comment
Да, 305 не было в опциях, а также оказалось, что тип важен, 305 не будет работать, если item.key (int), что и в моем случае. - person ericsicons; 16.06.2015