如何在AngularJS中访问json中的值

时间:2014-11-13 03:19:42

标签: javascript json angularjs node.js

我正在使用nodeJS,因此服务器将通过执行以下操作将以下json对象发送到控制器:

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

然后在控制器中,我想操纵变量,如:

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

QA是定义为:

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

但是,错误消息总是告诉我data[question]未定义。获取价值的正确方法是什么?我试过了data.question。它也不起作用。

我知道我可以通过在html中使用ng-repeat来简单地显示json值,但我想更灵活地管理值。

2 个答案:

答案 0 :(得分:1)

似乎你QA函数使用$ http或$ resource来获取ajax响应。

如果在QA服务中返回$ http.get / $ http.post,则可以使用此代码来处理json响应:

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

如果您在QA服务中使用$ resource,那么您可以使用此代码来处理:

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

Here is $http document.

Here is $resource document.

P.S你需要在ajax中理解,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}}获取数据。这是因为角度会$看你的数据。一旦数据($ resource promise对象)发生变化(表示http请求已完成),Angular将自动呈现您的视图。

这就是为什么在您看来您可以获得data.answer。但是在你的控制器中,你不能。

答案 1 :(得分:0)

$ scope.data = QA.get();
的console.log(数据);

或在您的模板中:

{{data | json}}

这会给你一个提示