2017-05-10 1 views
1

Je suis en train de diviser une seule chaîne en tableau ou format JSON. Veuillez aider à faire cela dans le contrôleur js angulaire (pas en vue HTML).découper une chaîne en AngularJS contrôleur

Le format de la chaîne est comme,

string="Name1;Email1;ID1~Name2;Email2;ID2" 

Aucun des moyens que j'ai essayé travaillé. J'ai essayé d'utiliser string.split ('~') mais j'obtiens une erreur car split n'est pas une fonction.

myView.service('ViewService', [function() { 
var temp = []; 
var fstring = []; 
this.SplitUser = function (userstring) { 
    debugger; 
    //temp = userstring.split('~'); 
    angular.forEach(userstring, function (value, key) { 
     fstring.push({ 
      'Name': temp.split(';')[i], 
      'EmailID': temp.split(';')[i++], 
      'ID': temp.split(';')[i++] 
     }); 
    }) 
    console.log(temp); 
    console.log(fstring); 
    return temp; 
} 
+1

Référencer toutes les façons que vous avez essayé. –

+0

'var arr = string.split ('~');' devrait fonctionner. poster le code complet –

Répondre

0

Nécessité de boucler la temp array.not userstring .Aussi lorsque vous poussez au tableau fstring retirer le i et utiliser la position en tant que numéro

fstring.push({ 
    'Name': value.split(';')[0], 
    'EmailID': value.split(';')[1], 
    'ID': value.split(';')[2] 
); 

changement votre service comme celui-ci.

.service('ViewService', [function() { 
var temp = []; 
var fstring = []; 
this.SplitUser = function (userstring) { 
    debugger; 
    temp = userstring.split('~'); 
    angular.forEach(temp, function (value, key) { 
     fstring.push({ 
      'Name': value.split(';')[0], 
      'EmailID': value.split(';')[1], 
      'ID': value.split(';')[2] 
     }); 
    }) 
    console.log(temp); 
    console.log(fstring); 
    return temp; 
} 
}]) 

Démo

angular.module("app",[]) 
 
.controller("ctrl",function($scope,ViewService){ 
 
    var string="Name1;Email1;ID1~Name2;Email2;ID2"; 
 
    ViewService.SplitUser(string) 
 

 
}).service('ViewService', [function() { 
 
var temp = []; 
 
var fstring = []; 
 
this.SplitUser = function (userstring) { 
 
    debugger; 
 
    temp = userstring.split('~'); 
 
    angular.forEach(temp, function (value, key) { 
 
     fstring.push({ 
 
      'Name': value.split(';')[0], 
 
      'EmailID': value.split(';')[1], 
 
      'ID': value.split(';')[2] 
 
     }); 
 
    }) 
 
    console.log(temp); 
 
    console.log(fstring); 
 
    return temp; 
 
} 
 
}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
    
 
</div>

+0

Je reçois une erreur comme TypeError: temp.split est pas une fonction à utiliser ' – Aneez

+0

DonT temp.split'use' temp = userstring.split ('~'); 'vérifier à nouveau le service –

0

var string = "Name1;Email1;ID1~Name2;Email2;ID2"; 
 
// Initial split in entries 
 
var splitStrings = string.split('~'); 
 
var objects = []; 
 
for(var i = 0; i < splitStrings.length; i++) { 
 
    // split into properties 
 
    var objProps = splitStrings[i].split(';'); 
 
    var myObj = {}; 
 
    myObj.name = objProps[0]; 
 
    myObj.mail = objProps[1]; 
 
    myObj.id = objProps[2]; 
 
    objects.push(myObj); 
 
} 
 

 
console.log(objects);

Cela devrait diviser votre chaîne et le mettre en objets. Puis ajoutez ces objets dans un tableau.

Si vous souhaitez utiliser JSON et avoir le contrôle sur le code qui vous envoie le message, je vous suggère d'utiliser JSON.parse() et JSON.stringify() à la place.

Ce sollution attendent une structure stricte comme celle que vous avez affichée et n'a pas de traitement eror.

+0

Obtenir une erreur comme TypeError: temp.split est pas une fonction à – Aneez

+0

Est-ce que ces extraits travaillent pour vous ou ils reviennent aussi l'erreur? – Morfium

0

var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = []; 
 
var string="Name1;Email1;ID1~Name2;Email2;ID2" 
 
var arr = string.split('~'); 
 
angular.forEach(arr, function (value, key) { 
 
    
 
     $scope.name.push({ 
 
      'Name': value.split(';')[0], 
 
      'EmailID': value.split(';')[1], 
 
      'ID': value.split(';')[2] 
 
     }); 
 
    }) 
 
    console.log($scope.name); 
 
});
<!DOCTYPE html> 
 
<html ng-app="plunker"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script>document.write('<base href="' + document.location + '" />');</script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.4.12/angular.js" data-semver="1.4.9"></script> 
 
    <script src="app.js"></script> 
 
    </head> 
 

 
    <body ng-controller="MainCtrl"> 
 
    <p>Hello {{name}}!</p> 
 
    </body> 
 

 
</html>