У меня возникает проблема с отображением выбора
У меня есть примерное значение модели, которое является интергером в базе данных. На данный момент я хочу сделать выбор, как показано ниже, но я хочу, чтобы он отображал строку. Значение будет отображаться в моей двухсторонней привязке, но когда я выбираю строку 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>
Попробуйте использовать 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]"
Обновление Пожалуйста, используйте метод @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];
}
}
});