it-swarm.com.de

So teilen Sie einen String mit angleJS

Ich wollte wissen, ob ich eine Saite einfach in angleJS aufteilen kann. Ich habe meine

 $scope.test = "test1,test2";

in meinem Controller und aus meiner Sicht wollte ich so etwas tun

{{test[0] | split(',')}}
{{test[1] | split(',')}}

Ich habe viel über Eingabe und ng-change gesehen, wie eine Funktion im Controller aufgerufen wurde, die den String oder etwas mit ng-list aufteilte, aber in meinem Fall funktioniert nichts.

danke an alle.

44
KeizerBridge

Möglicherweise möchten Sie diese Funktionalität in einen Filter einbinden. Auf diese Weise müssen Sie die mySplit-Funktion nicht in alle Controller einfügen. Zum Beispiel

angular.module('myModule', [])
    .filter('split', function() {
        return function(input, splitChar, splitIndex) {
            // do some bounds checking here to ensure it has that index
            return input.split(splitChar)[splitIndex];
        }
    });

Von hier aus können Sie einen Filter wie gewünscht verwenden

{{test | split:',':0}}
{{test | split:',':0}}

Weitere Informationen unter http://docs.angularjs.org/guide/filter (Danke, Ross)

Plunkr @ http://plnkr.co/edit/NA4UeL

87
leon

Thx Jungs, ich habe endlich die Lösung gefunden, eine wirklich grundlegende Lösung ... In meinem Controller habe ich 

$scope.mySplit = function(string, nb) {
    var array = string.split(',');
    return array[nb];
}

und aus meiner Sicht

{{mySplit(string,0)}}
46
KeizerBridge

Sie können so etwas versuchen:

$scope.test = "test1,test2";
{{test.split(',')[0]}}

sie erhalten jetzt "test1", während Sie {{test.split(',')[0]}} versuchen.

und Sie erhalten "test2", während Sie {{test.split(',')[1]}} versuchen

hier ist mein plnkr: 

http://plnkr.co/edit/jaXOrZX9UO9kmdRMImdN?p=preview

26

Sie könnten dies versuchen:

$scope.testdata = [{ 'name': 'name,id' }, {'name':'someName,someId'}]
$scope.array= [];
angular.forEach($scope.testdata, function (value, key) {
    $scope.array.Push({ 'name': value.name.split(',')[0], 'id': value.name.split(',')[1] });
});
console.log($scope.array)

Auf diese Weise können Sie die Daten für eine spätere Verwendung speichern und auf diese zugreifen, indem Sie eine Wiederholung wie folgt verwenden:

<div ng-repeat="item in array">{{item.name}}{{item.id}}</div>


Ich hoffe das hat jemandem geholfen, 
Plunker link: hier
Alle Gutschriften gehen an @jwpfox und @Mohideen ibn Mohammed aus der obigen Antwort.

1
Joost Blok