簡體   English   中英

如何在AngularJS中訪問json中的值

[英]How can I access value in json in AngularJS

我正在使用nodeJS,因此服務器將通過執行以下操作將以下json對象發送給控制器:

data = {
    "question": "theQuestion",
    "answer": "theAnswer"
};
res.json(data);

然后在控制器中,我想像這樣操作變量:

data = QA.get();
$scope.q = data[question] + "Some additional info here";

質量檢查是定義為:

angular.module('questionServices', ['ngResource'])
.factory('QA', function  ($resource) {
    return $resource('/qa');
});

但是,錯誤消息總是告訴我data[question]未定義。 獲取價值的正確方法是什么? 我已經嘗試過data.question 它也不起作用。

我知道我可以在html中使用ng-repeat來簡單地顯示json值,但我想更靈活地管理這些值。

似乎您的質量檢查功能是使用$ http或$ resource來獲取ajax響應。

如果您在質量檢查服務中返回$ http.get / $ http.post,則可以使用以下代碼來處理json響應:

QA.get().success(function(data){
    console.log(data);
    console.log(data.answer);
}).error(functoin(data){
    //handle error here.
});

如果在質量檢查服務中使用$ resource,則可以使用以下代碼來處理該問題:

QA.get().$promise.then(function(data){
     console.log(data);
     console.log(data.answer);
}).then(function(error){
     //handler error here.
});

這是$ http文件。

這是$ resource文檔。

您需要在ajax中理解的PS,javascript以異步方式處理請求。 這意味着當執行這些代碼時:

$scope.data = QA.get()
console.log($scope.data);  // QA.get()  send a http request. Now data is still promise object.

您無法立即收到此回復。 因此,如果您嘗試記錄數據,或使用console.log(data.answer)獲取data.answer。 你會變得undefined

但是在您的html視圖中。 您可以使用{{data|json}}獲取數據。 這是因為angular會監視您的數據。 並且一旦數據($ resource promise對象)被更改(意味着http請求完成),Angular將自動呈現您的視圖。

這就是為什么在您看來可以獲取data.answer的原因。 但是在您的控制器中,您不能。

$ scope.data = QA.get();
的console.log(數據);

或在您的模板中:

{{data | json}}

這會給你一個提示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM