[英]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.