Eine Zahlenfolge '5'
var num_str = '5';
Wie kann ich die unten aufgeführten Antworten gleichzeitig analysieren und korrigieren lassen?
{{num_str + 1}} // 6
{{num_str - 1}} // 4
parseInt kann nicht in einem Angular-Ausdruck verwendet werden.
{{parseInt(num_str) - 1}}
Zahlenfilter kann nicht addieren und minus,
{{num_str - 1 | number}}
Wenn jemand nützliche Vorschläge hat, werde ich Sie sehr schätzen
javascript
angularjs
Chen-Tsu Lin
quelle
quelle
Antworten:
In Ihrem Controller:
$scope.num_str = parseInt(num_str, 10); // parseInt with radix
quelle
Ich bevorzuge einen Winkelfilter.
app.filter('num', function() { return function(input) { return parseInt(input, 10); }; });
dann können Sie dies im dom verwenden:
{{'10'|num}}
Hier ist eine Geige .
Hoffe das hat geholfen!
quelle
Du kannst es versuchen:
{{ 1 * num_str + 1 }}
http://jsfiddle.net/Z32fP/
quelle
Eine andere Option wäre:
$scope.parseInt = parseInt;
Dann könnten Sie dies tun, wie Sie wollten:
{{parseInt(num_str)-1}}
Dies liegt daran, dass Winkelausdrücke keinen Zugriff auf das haben
window
, sondern nur aufscope
.Mit dem Zahlenfilter funktioniert es auch, wenn Sie Ihren Ausdruck in Klammern setzen:
{{(num_str-1) | number}}
DEMO
quelle
{{ num_str - 0 }}
...funktioniert bei mir.
quelle
Keines der oben genannten hat bei mir funktioniert.
Aber das tat:
{{ (num1_str * 1) + (num2_str * 1) }}
quelle
Sie können die Javascript- Zahlenmethode verwenden, um sie in eine Zahl zu analysieren.
var num=Number (num_str);
quelle
Neben {{1 * num_str + 1}} können Sie auch Folgendes versuchen (minus zuerst):
{{ num_str - 0 + 1}}
Aber es ist sehr zerbrechlich, wenn num_str Buchstaben enthält, wird es fehlschlagen. Versuchen Sie also besser, einen Filter zu schreiben, wie @hassassin sagte, oder verarbeiten Sie die Daten direkt nach dem Initiieren vor.
quelle
Sie können ein Rohr erstellen und es in Ihrem System verwenden, wo immer Sie möchten.
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ // tslint:disable-next-line:pipe-naming name: 'toNumber', pure: false }) export class ToNumberPipe implements PipeTransform { public transform(items: any): any { if (!items) { return 0; } return parseInt(items, 10); } }
Im HTML
Denken Sie daran, diese Pipe in Ihrer Moduldatei als vollständig zugänglich zu deklarieren.
quelle
Ich habe die oben genannten Lösungen ausprobiert und keine davon hat für mich funktioniert. Ich habe JSON.parse verwendet und es hat funktioniert:
$http.get('/api/getAdPolling') .success(function (data) { console.log('success: ' + data.length); if (JSON.stringify(data) != "not found") { $scope.adPoll = JSON.parse(data); } }) .error(function (data) { console.log('Error: ' + data); });
quelle
Nicht wirklich toll, aber ein lustiger Hack: Du kannst - statt +
{{num_str -- 1 }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script> <div ng-app> {{'1'--1}} </div>
quelle