我正在研究AngularJs教程,我想訪問JSON。我不明白爲什麼在教程中他們使用[]來訪問JSON。當在 「標籤」 的用戶點擊它會把airport.code到setAirport功能,並獲得currentAirport.name回 下面是代碼:爲什麼我必須以Angular的特殊方式訪問JSON?
HTML:
<html ng-app>
<head>
<title>Demo</title>
<script type="text/javascript" src="js/lib/angular.min.js"></script>
<script type="text/javascript" src="js/controllers/app.js"></script>
</head>
<body>
<div ng-controller="AppCtrl">
<h1>AngulAir</h1>
<ul>
<li ng-repeat="airport in airports">
<a href="" ng-click="setAirport(airport.code)">
{{airport.code}} - {{airport.city}}
</a>
</li>
</ul>
<p ng-show="currentAirport">Current Airport : {{currentAirport.name}}</p>
</div>
和這是JS代碼:
function AppCtrl ($scope) {
$scope.airports = {
"PDX": {
"code": "PDX",
"name": "Portland International Airport",
"city": "Portland",
"destinations": [
"LAX",
"SFO"
]
},
"STL": {
"code": "STL",
"name": "Lambert-St. Louis International Airport",
"city": "St. Louis",
"destinations": [
"LAX",
"MKE"
]
}
};
$scope.currentAirport = null;
$scope.setAirport = function (code){
$scope.currentAirport = $scope.airports[code];
};
}
你可以在上一個語句中看到---> $ scope.currentAirport = $ scope.airports [code];它使用[]來訪問JSON。我不明白爲什麼用這種方式。我試圖在另一種情況下進行試驗,似乎不同的工作,這裏是我的實驗:
HTML:
<html>
<head>
<title>hello world</title>
</head>
<body>
</body>
<script type="text/javascript" src=jsfile.js></script>
<script type="text/javascript">
alert(airports[code]);
</script>
JS文件:
airports = {
"PDX": {
"code": "PDX",
"name": "Portland International Airport",
"city": "Portland",
"destinations": [
"LAX",
"SFO"
]
},
"STL": {
"code": "STL",
"name": "Lambert-St. Louis International Airport",
"city": "St. Louis",
"destinations": [
"LAX",
"MKE"
]
}
};
,我得到這個在我的瀏覽器「 ReferenceError:找不到變量:代碼「爲什麼?這個語句的JSON訪問方式-----> $ scope.currentAirport = $ scope.airports [code];不等於這個說法-----> alert(機場[code]); ?????
爲什麼在第二種情況下我不能使用[]?有誰知道請告訴我
問題不是你不能使用機場[code],問題是你沒有定義任何名爲「code」的變量。添加行「var code ='PDX';」 (不包括引號)在「警報(機場[代碼])之前的行;」然後再試一次。 –
這個問題似乎與Angular沒有關係,對於JSON也沒有關係。當你從未定義變量時,你如何期望定義變量? – Pavlo