2016-03-04 15 views
1

我正在使用角js來閱讀json。爲什麼在數組之前顯示undefined?

但是如果我使用「+ =」,它會顯示爲undefined。

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

你可以更新你所期望的輸出嗎? – Prasad

回答

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"; 
} 
+0

thx luka,這是工作。 –

+0

沒問題,不要忘記upvote並接受,如果你的問題被回答 –

+0

我以前試過,但它不工作......它只是在名稱之間添加一個空格 –

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; 
     } 
     }); 
+1

這不能工作,因爲在你分配空字符串時,$ scope不在作用域(具有諷刺意味的是)。 –

+0

你是絕對正確的,糾正了錯誤:) –

+0

thx所有,但我怎麼能把他們分成不同的行。因爲它是沒用的,如果我加

2

所以在第一次循環您正在使用的+=操作上undefined財產你還沒有初始化$scope.Message。只是在循環之前將它初始化爲空字符串:

$scope.Message = ''; 
    for(var i=0; i<3; i++) { 
     $scope.Message += ojt.employees[i].firstName; 
    } 
0

你在那裏做的是創建一個新的字符串。除了使用該

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對象。對不起。在這種情況下,我的答案並不是解決您的問題的正確答案。

相關問題