Я получаю список объектов с моего сервера в следующем формате:
[ { 'id' : 1, ... }, { 'id' : 2, ... }, { 'id' : 3, ... } ]
Я пытаюсь, чтобы позволить пользователю выбирать объекты с помощью radio
кнопки. Вот следующий код HTML:
<input type="radio" ng-model="id" value={{ obj.id }} />
Я повторяю этот фрагмент кода для каждого объекта в списке. Проблема заключается в том, что при нажатии одной из кнопок появляется следующая ошибка:
Error: ngModel:numfmt
Model is not of type 'number'
Идентификатор каждого объекта явно является числом, так как следующий журнал консоли:
console.log(typeof (obj.id)); <- return 'number'
Но это все еще не работает. Может ли кто-нибудь помочь мне узнать, почему это ломается?
EDIT Код, повторяющийся через массив объектов:
<ul ng-repeat="obj in objectList>
<li>
<label><input type="radio" string-to-number ng-model="id" value={{ obj.id }} />
{{ obj.id }}</label>
</li>
</ul>
HTML должен быть:
<ul ng-repeat="obj in objectList">
<li>
<input type="radio" name=group1 ng-model="group1.id" ng-value='obj.id' />
{{ obj.id }
</li>
</ul>
<p>Model = {{group1.id}}</p>
</div>
Существует несколько проблем с кодом
Атрибут ng-model
должен быть установлен в свойство объекта. (Используйте точку.)
Используйте ng-value
для угловых выражений
Группа радиокнопки должна быть определена с помощью атрибута name
.
numfmt
относится кnumerical format
ошибки из автоматически генерируемой страницы Angular error. В нем говорится, что ошибка - это ошибкаngModel
, а точнее ошибкаnumerical format
. Что не имеет смысла для меня, потому что я дважды проверил внутри этого контроллера, что данные фактически являются числом. :(