web-dev-qa-db-fra.com

Comment diviser une chaîne avec angularJS

Je voulais savoir si je pouvais diviser une chaîne simplement en angularJS . J'ai mon

 $scope.test = "test1,test2";

dans mon contrôleur et à mon avis, .__ je voulais faire quelque chose comme ça

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

J'ai vu beaucoup de choses à propos de l'entrée et de ng-change appeler une fonction dans le contrôleur qui divise la chaîne ou quelque chose avec ng-list mais rien ne fonctionne dans mon cas.

merci à tous.

44
KeizerBridge

Vous voudrez peut-être intégrer cette fonctionnalité dans un filtre, de cette manière, vous n'aurez pas à mettre la fonction mySplit dans tous vos contrôleurs. Par exemple

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];
        }
    });

À partir de là, vous pouvez utiliser un filtre comme prévu à l'origine.

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

Plus d'infos sur http://docs.angularjs.org/guide/filter (merci ross)

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

87
leon

Thx les gars, j'ai finalement trouvé la solution, vraiment basique .. Dans mon contrôleur, j'ai 

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

et à mon avis

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

Vous pouvez essayer quelque chose comme ça:

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

maintenant vous obtiendrez "test1" pendant que vous essayez {{test.split(',')[0]}}

et vous obtiendrez "test2" pendant que vous essayez {{test.split(',')[1]}}

voici mon plnkr: 

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

26

Vous pouvez essayer ceci:

$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)

De cette façon, vous pouvez sauvegarder les données pour une utilisation ultérieure et y accéder en utilisant un ng-repeat comme ceci:

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


J'espère que cela a aidé quelqu'un, 
Lien Plunker: ici
Tous les crédits vont à @jwpfox et @Mohideen ibn Mohammed à partir de la réponse ci-dessus.

1
Joost Blok