Pudiera darse el caso de que encuentres algún problema con tu código o proyecto, recuerda probar siempre en un entorno de testing antes subir el código al proyecto final.
Solución:
No puedes (al menos por el momento) usar parseInt
dentro de expresiones angulares, ya que no se evalúan directamente. citando El documento:
Angular no usa JavaScript
eval()
para evaluar expresiones. En lugar de Angular$parse
El servicio procesa estas expresiones.Las expresiones angulares no tienen acceso a variables globales como
window
,document
olocation
. Esta restricción es intencional. Evita el acceso accidental al estado global, una fuente común de errores sutiles.
Entonces puedes definir un total()
en su controlador, luego utilícelo en la expresión:
// ... somewhere in controller
$scope.total = function()
return parseInt($scope.num1) + parseInt($scope.num2)
// ... in HTML
Total: total()
Aún así, eso parece ser bastante voluminoso para una operación tan simple como sumar los números. La alternativa es convertir los resultados con -0
op:
Total: num1-0 + (num2-0)
… pero eso obviamente no lo hará parseInt valores, solo emitir ellos a Números (|number
filtro impide mostrar null
si este lanzamiento resulta en NaN
). Así que elija el enfoque que se adapte a su caso particular.
Opción 1 (a través del controlador):
angular.controller('numCtrl', function($scope, $window)
$scope.num = parseInt(num , 10);
Opción 2 (a través de un filtro personalizado):
app.filter('num', function()
return function(input)
return parseInt(input, 10);
);
num) + (num2
Opción 3 (mediante expresión):
Declara esto primero en tu controlador:
$scope.parseInt = parseInt;
Luego:
parseInt(num1)+parseInt(num2)
Opción 4 (de raina77ow)
(num1-0) + (num2-0)
Total: num1 + num2
y en js:
parseInt($scope.num1) + parseInt($scope.num2)
Calificaciones y reseñas
Si tienes alguna sospecha y disposición de ascender nuestro post puedes escribir una disquisición y con gusto lo estudiaremos.