我正在使用角度js来阅读json。
但如果我使用“+ =”,它会显示未定义。
var text = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
var ojt= JSON.parse(text);
var moduleA = angular.module("ModuleA", []);
moduleA.controller("MsgController", function ($scope) {
'use strict';
for(var i=0; i<3; i++) {
$scope.Message += ojt.employees[i].firstName;
}
});
结果如下:
undefinedJohnAnnaPeter
出了什么问题?
答案 0 :(得分:5)
Message
未定义,然后您+=
上有一些字符串,因此导致您的问题。事先将$scope.Message
分配给空字符串以消除错误。
$scope.Message = ""
for(var i=0; i<3; i++) {
$scope.Message += ojt.employees[i].firstName;
}
编辑:如果您想在每个名称后添加新行,请在名称之间添加\n
。
$scope.Message = ""
for(var i=0; i<3; i++) {
$scope.Message += ojt.employees[i].firstName + "\n";
}
答案 1 :(得分:2)
您尚未初始化$scope.Message
,因此在第一次迭代中,您在+=
属性上使用undefined
运算符。只需在循环之前将其初始化为空字符串:
$scope.Message = '';
for(var i=0; i<3; i++) {
$scope.Message += ojt.employees[i].firstName;
}
答案 2 :(得分:1)
我的猜测是变量$ scope.Message是未定义的
试试这个:
var text = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
var ojt= JSON.parse(text);
var moduleA = angular.module("ModuleA", []);
moduleA.controller("MsgController", function ($scope) {
'use strict';
$scope.Message ='';
for(var i=0; i<3; i++) {
$scope.Message += ojt.employees[i].firstName;
}
});
答案 3 :(得分:0)
你在做什么就是创建一个新的String。而不是使用这个
var text = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
你应该使用这个
var text = {
"employees": [{
"firstName": "John",
"lastName": "Doe"
}, {
"firstName": "Anna",
"lastName": "Smith"
}, {
"firstName": "Peter",
"lastName": "Jones"
}]
};
这将创建一个JSON,您可以通过点表示法(object.key)访问对象属性。
编辑:哦,哇,我完全没有看到你正在将你的字符串解析为JSON对象。对不起。在这种情况下,我的答案不是正确的,以满足您的问题。