2017-01-04 2 views
0

У меня есть select, который я сделать так:Угловой: нг-модель в виде числа

<select 
    ng-model="otherDoc.sub_category" 
    ng-options="key as value for (key, value) in vm.otherDocs" 
> 
</select> 

otherDoc.sub_category является number однако, выберите преобразует значение в строку. Поэтому они не совпадают.

Как я могу определить угловое соответствие модели для контента, а не типа?

+1

Это указано в [документации для 'select'] (https://docs.angularjs.org/api/ng/directive/select#binding-select-to-a-non-string-value-via- ngmodel-parsing-formatting) –

ответ

2

Хитрости использует ngModel. $ Парсер и ngModel. $ Форматтеров

Если я вас понимаю, вы хотите, чтобы значение возвращается из выбора, чтобы перевести обратно в ряд, прежде чем он попадет в модели (otherDoc. подкатегория).

Я хотел бы добавить директиву ваш выбор, как так

(HTML,)

<select 
    ng-model="otherDoc.sub_category 
    ng-options="key as value for (key, value) in vm.otherDocs" 
    formatter-directive> 
</select> 

(Javascript)

angular.module('someModuleName').directive('formatterDirective', function() { 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, element, attrs, ngModel) { 
     ngModel.$formatters.push(function(val) { 
      return parseInt(val, 10); 
     }); 
    } 
    }; 
}); 

Значение в модели будет анализироваться в base 10 integer, когда он возвращается из представления.

+0

Также это хорошая статья о форматирующих и парсерах -https: //alexperry.io/angularjs/2014/12/10/parsers-and-formatters-angular.html –

Смежные вопросы