AngularJS - ngFilter, ввод формата, но не ngModel

Я хочу применить фильтр формата к тексту ввода, но НЕ к его модели, но обновить ngModel с правильным («чистым») значением, когда пользователь изменяет значение в поле ввода. Вот что я имею в виду...

Например, скажем, у меня есть этот объект:

$scope.myObject = {
                value: 1234434.12,
                format:"currency"
            };

И этот ввод:

<input type="text" ng-model="myObject.value" format="myObject.format" />
<pre>{{myObject.value|json}}</pre>

Я хочу:

  • Текст на входе: 1,234,434.12
  • Значение ngModel должно быть: 1234434.12

И когда пользователь меняет вводимый текст с 1,234,434.12 на 1,234,555.60, я хочу:

  • Текст на входе: 1,234,555.60
  • Значение ngModel должно быть: 1234555.60

Как видите, я хочу сохранить привязку, но я также хочу, чтобы форматирование не влияло на модель. Как я могу достичь этого?


person Christos Baziotis    schedule 03.09.2014    source источник


Ответы (1)


Вы должны иметь возможность использовать фильтр валют по умолчанию, предоставляемый Angular. При использовании фильтра меняется только вывод на экран - внутренняя модель остается нетронутой. Чтобы увидеть это, вы можете написать что-то вроде этого:

<br>internal model value: <span>{{data.value}}</span>
<br>formatted as currency (USD$): <span>{{data.value | currency}}</span>

Вы увидите, что внутреннее значение модели не изменилось.

Вот плункер с полным кодом.

person Caspar Harmer    schedule 03.09.2014