Выберите HTML Значение целое число не отображает строку

0

У меня возникает проблема с отображением выбора

У меня есть примерное значение модели, которое является интергером в базе данных. На данный момент я хочу сделать выбор, как показано ниже, но я хочу, чтобы он отображал строку. Значение будет отображаться в моей двухсторонней привязке, но когда я выбираю строку yes, no или na в значении select, она не отображает строку или что-либо вообще.

Как получить мое значение для отображения строки vs int.

{{samplemodel}}
<select class="input-large input-large-altered" ng-model="samplemodel">
            <option value="1">Yes</option>
            <option value="2">No</option>
            <option value="3">NA</option>
        </select>
Теги:

2 ответа

3
Лучший ответ

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

Пример:

 $scope.myArray = [
 {Val: 1, Display: 'Yes'},
 {Val: 2, Display: 'No'},
 {Val: 3, Display: 'NA'}
];
$scope.samplemodel = "Yes";

//Дает строку отображения объекта

{{samplemodel}}
    <select class="input-large input-large-altered" ng-options="item.Display as item.Display for item in myArray" ng-model="samplemodel">
    </select>

ИЛИ

//Дает значение val объекта

 <select class="input-large input-large-altered" ng-options="item.Val as item.Display for item in myArray" ng-model="samplemodel">
    </select>

ИЛИ//Дает весь объект

 <select class="input-large input-large-altered" ng-options="item as item.Display for item in myArray" ng-model="samplemodel">
        </select>

Вот plunkr, чтобы дать вам полный пример.

Также для объяснения ng-options он работает так, как ng-options = "[значение] как [display] для [object] в [array]"

  • 0
    У меня проблема с myArray, я достигаю его, добавляя запятые за фигурными скобками, console.log и вижу его, но когда я использую select, параметры не отображаются. Вы знаете, почему это может быть?
  • 0
    Убедитесь, что вы используете $ scope.myArray
Показать ещё 5 комментариев
0

Обновление Пожалуйста, используйте метод @Ohjay44, поскольку он более совершенен. Я оставлю это, поскольку это все еще действительный optin.

Вам нужно будет использовать фильтр:

HTML

{{samplemodel | stringFromInt}}

JS

app.filter('stringFromInt', function(){
    return function(input) {
      if (!input){
        return null;
      } else {
        return {1: 'Yes', 2: 'No', 3: 'NA'}[input];
      }
    }
});

https://plnkr.co/edit/DbQzDMSvCtyBWGSxvleU?p=preview

  • 0
    Брайан, ты не думаешь, что есть лучший способ сделать это через фильтр? Фильтр работает, но он будет постоянно запускать этот фильтр, пока вы находитесь на странице, плюс, если он когда-либо расширит то, что находится внутри этого выбора, он должен помнить, чтобы редактировать фильтр. Я считаю, что ng-options будет лучшим решением.
  • 0
    Я полностью согласен, хороший звонок!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню