[英]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.
});
您需要在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.