2014-01-22 64 views
0

我正在研究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]); ?????

爲什麼在第二種情況下我不能使用[]?有誰知道請告訴我

+0

問題不是你不能使用機場[code],問題是你沒有定義任何名爲「code」的變量。添加行「var code ='PDX';」 (不包括引號)在「警報(機場[代碼])之前的行;」然後再試一次。 –

+0

這個問題似乎與Angular沒有關係,對於JSON也沒有關係。當你從未定義變量時,你如何期望定義變量? – Pavlo

回答

3

在第一個例子:

$scope.setAirport = function (code){ 
    $scope.currentAirport = $scope.airports[code]; 
}; 

code被傳遞給函數和他們使用它引用在機場對象的機場代碼。

在您的例子:

alert(airports[code]); 

code是不確定的。

您需要定義代碼或手動將機場代碼傳遞給它。

+0

noobie可以理解,謝謝你的錯誤,非常感謝你^^ – user3156452

相關問題