Угловой: нг-модель как число

У меня есть select который я представляю так:

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

otherDoc.sub_category это number однако метод select преобразует значение в строку. Так что они не совпадают.

Как я могу сказать угловой, чтобы соответствовать модели для контента, а не для типа?

1 ответ

Решение

Хитрость заключается в использовании форматеров ngModel.$ И форматеров ngModel.$

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

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

(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);
      });
    }
  };
});

Значение в вашей модели будет проанализировано в целых 10 целых, когда оно вернется из представления.

Другие вопросы по тегам