与打印时的静态数据相比,在控制台上打印时的动态数据显示方式有所不同

时间:2018-08-22 16:25:20

标签: javascript angularjs html-parsing

我正在从弹簧控制器向角度控制器返回带有逗号分隔值的字符串,如下所示。

app.controller('myListController', ['$scope', function ($scope) {

//get data dynamically , logic..
$scope.myList = response;
console.log("$scope.myList  " + $scope.myList); // "one,two","three","four","five,eight,nine"

//here i want to print as one,two,three,four,five,eight,nine 

//convert string to array with comma separated values
var array_list = JSON.parse($scope.myList);
   console.log("array_list :: " + array_list);
}]);

上面的代码抛出错误

angular.min.js?dummy=0.6014859345541128:119 SyntaxError: Unexpected token , in JSON at position 15
    at JSON.parse (<anonymous>)

相同的代码,当用静态代码替换时,它可以正常工作。 例如:

   $scope.myList = ["one,two","three","four","five,eight,nine"];

   console.log("$scope.myList static content:: " +   $scope.myList); //one,two,three,four,five,eight,nine

上面有输入吗?

2 个答案:

答案 0 :(得分:0)

JSON.parse需要一个字符串作为有效JSON输入,并返回一个JavaScript对象。

JSON.stringify需要一个JavaScript对象作为输入并返回一个字符串。

在您的示例中,您好像将$ scope.myList(JavaScript数组)传递到JSON.parse中,期望得到字符串结果。如果$ scope.myList是JavaScript对象,请使用.stringify

如果要查找的结果是一,二,三,四,五,八,九,则应使用Array.join方法。 EX // $ scope.myList.join()

答案 1 :(得分:0)

正如我在JSON.stringify结果中看到的那样,您的响应字符串必须是以下值:

'"one,two","three","four","five,eight,nine"'

如果是,则可以使用简单的正则表达式来获得所需的结果:

var result = $scope.myList.replace(/"/g, ""); //"one,two,three,four,five,eight,nine"

如果这不起作用,请分享$ scope.myList的确切值