繁体   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