Атрибут значения в теге параметра всегда возвращает строку вместо числа в представлении angularJS - PullRequest
1 голос
/ 09 июля 2019

В следующем блоке кода атрибут значения ВСЕГДА возвращает мне строковую версию моего Id вместо числа

<select class="" name="RefusedReason" id="RefusedReason" 
        ng-model="rdpt.Items [$index].RewardPointItems.RefusedReasonID">
    <option ng:repeat="rr in lstRefusedReason" value="{{rr.Id}}"> 
    {{rr.Name}}
    </option> 
</select>

В моем контроллере источником данных являетсяопределяется следующим образом:

vm.lstRefusedReason = [
    { Id: 1, Name: "MyTest" },
    { Id: 2, Name: "MyTest2" },
    { Id: 3, Name: "MyTest3" }
]; 

После проверки в Интернете я попробовал множество возможных решений для этого, добавив директиву convert-to-number к своему тегу выбора, используя ng-value, но значение затем возвращает мнеИмя (например, «MyTest») вместо идентификатора.Я также попробовал {{parseInt(rr.Id}}, но он возвращает меня неопределенным.

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Используйте директиву ng-value:

<select class="" name="RefusedReason" id="RefusedReason" 
        ng-model="rdpt.Items [$index].RewardPointItems.RefusedReasonID">
    ̶<̶o̶p̶t̶i̶o̶n̶ ̶n̶g̶:̶r̶e̶p̶e̶a̶t̶=̶"̶r̶r̶ ̶i̶n̶ ̶l̶s̶t̶R̶e̶f̶u̶s̶e̶d̶R̶e̶a̶s̶o̶n̶"̶ ̶v̶a̶l̶u̶e̶=̶"̶{̶{̶r̶r̶.̶I̶d̶}̶}̶"̶>̶ ̶
    <option ng:repeat="rr in lstRefusedReason" ng-value="rr.Id">  
      {{rr.Name}}
    </option> 
</select>

Интерполяция ({{ }}) преобразует выражения AngularJS в строки.Избегайте этого, используя директиву ng-value.

Для получения дополнительной информации см.

0 голосов
/ 09 июля 2019

Используйте ng-options вместо:

<select ng-model="someNumericModelValue"
        ng-options="rr.Id as rr.Name for rr in lstRefusedReason"></select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...