2013-07-03 10 views
6

Mam problem z dodaniem numeru z pola tekstowego i umieszczeniem go w innym polu tekstowym. Moja sytuacja jest tak:AngularJS jak dodawać liczby wewnątrz wyrażenia z pola tekstowego?

Mam jednego pola tekstowego:

<input type="text" ng-model="num1" /> 

I cokolwiek wejście jest na tym polu tekstowym, będzie to wartość innego pola tekstowego tak:

<input type="text" value="{{ num1 + 1 }}" /> 

ten instalacja wyświetla się poprawnie, ale z błędami. Kiedy wpiszesz 2013 na pierwszym, drugi pokazuje 20131 zamiast 2014. Próbowałem też za pomocą filtrów tak:

<input type="text" value="{{ num1 + 1 | number}}" /> 

ale niestety to nie działa. Co mnie ominęło?

Odpowiedz

13

Wartość pola tekstowego to ciąg znaków. Musisz przekonwertować go na liczbę całkowitą/liczbę zmiennoprzecinkową, którą możesz wykonać za pomocą parseInt lub parseFloat, jeśli masz miejsca dziesiętne. Domyślnie nie ma metody parseInt dostępne w wypowiedzi, ale można go dodać do zakresu w kontrolerze, aby była dostępna:

$scope.parseInt = parseInt; 


<input type="text" value="{{ parseInt(num1) + 1 }}" /> 

Można see this in action here

+0

Niestety .. Nie działa .. To po prostu wyjść '1 '. parseInt() nic nie zwrócił ... – Melvin

+0

Tak, właśnie to zauważyłem, zaktualizowałem odpowiedź. –

+0

Dzięki @derek ... To działa .. :) – Melvin

0

num1 jest interpretowane jako ciąg znaków.

Zastosowanie parseInt() lub parseDouble() przekonwertować to do numeru podczas inicjalizacji.

5

Można również użyć typu danych wejściowych = liczba zamiast tekstu. Dodatkową zaletą jest to, że zapewnia typ pasujący do oczekiwanego.

+0

Byłoby miło móc to zrobić z elementami 'select'. – pspahn

0

Znalazłem metodę kleszcza do rozwiązania. Mój przypadek polega na tym, że muszę przeanalizować coś podobnego do item.qty. Ale znalazłem <div ng-click="item.qty = parseInt(item.qty) + 1>Add</div> nie będzie działać.

Wreszcie znalazłem ten sposób można rozwiązać

<div ng-click = "item.qty = item.qty - 1 + 2">Add</div> 
Powiązane problemy