Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:在$http.get()中添加以不同ID结尾的JSON的最佳方法是什么?_Javascript_Angularjs_Json_Scope - Fatal编程技术网

Javascript AngularJS:在$http.get()中添加以不同ID结尾的JSON的最佳方法是什么?

Javascript AngularJS:在$http.get()中添加以不同ID结尾的JSON的最佳方法是什么?,javascript,angularjs,json,scope,Javascript,Angularjs,Json,Scope,我试图显示来自JSON的项目,它在url的末尾有一个不同ID的数组(/api/messages/:messageId)。例如,/api/messages/12345将获得{“subject”:“subject12345”,“body”:“body12345”,“id”:“12345”} 我的想法是,通过数据循环并将其添加到“api/message/”的末尾就可以了。但在$http.get之前,我不知道如何定义数据 那么,定义数据的最佳方式是什么呢?或者有没有其他办法解决这个问题 AngularJ

我试图显示来自JSON的项目,它在url的末尾有一个不同ID的数组(/api/messages/:messageId)。例如,/api/messages/12345将获得{“subject”:“subject12345”,“body”:“body12345”,“id”:“12345”}

我的想法是,通过数据循环并将其添加到“api/message/”的末尾就可以了。但在$http.get之前,我不知道如何定义数据

那么,定义数据的最佳方式是什么呢?或者有没有其他办法解决这个问题

AngularJS代码:

   var countryApp = angular.module('countryApp',[]);

   countryApp.controller('CountryCtrl', function($scope, $http){

  for(i=0;i<data.length;i++){
    var messageId = data[i].id;
    console.log(messageId);
   // data is undefined here
     }

   $http.get('/api/messages/' + messageId ).success(function(data){
   $scope.messages = data; 

  $scope.expand = function (message) {
  angular.forEach($scope.messages, function (currentItem){
  currentItem.showfull = currentItem == message && !currentItem.showfull;
        });
       };
      });
    });

听起来你正试图做这样的事情:

$http.get('/api/messages/' + messageId).success(function(data) {
    for (obj in data) {
        data[obj] += messageId;
    }
    //do something with data.
});

你到底在问什么,我真的很困惑。我认为你需要更明确一点,但这是你想要的吗

var countryApp=angular.module('countryApp',[]);
countryApp.controller('CountryCtrl',函数($scope,$http){
风险值数据=[{
“主题”:“主题12345”,
“body”:“body12345”,
“id”:“12345”
}, {
“主题”:“主题123456789”,
“正文”:“正文123456789”,
“id”:“123456789”
}];
对于(变量i=0;i

加载。。。

在$http.get之前定义数据是什么意思?Data是在get调用后传递给您的对象。你无法定义它。它是为你定义的。您可以澄清一下吗?您需要通过$http success函数中的函数调用调用for循环,或者将for循环放入success函数中。就这些@理查德,达文波特,你说得对,数据是get调用后传递给我的对象。但是为了在JSON url的末尾添加每个id,我需要在$http.get()之前定义它。我的问题是,我是否可以调用$http.get()之前的数据,这样我就可以通过不同的URL(data[I].id)循环它。这会让这个问题更清楚吗?@user3492940,是的,我肯定可以在$http success函数内循环它,但我需要在该函数外循环它,这样我就可以添加到$https.get()的url末尾。有什么建议吗?在您的示例中,在触发$http请求之前,您需要通过另一个$http请求获取ID,或者如果您知道ID,您可以将其放入一个数组中并在该数组上循环(硬编码方式)。正是如此。但是messageId是未定义的。在$http.get()之前如何定义它?它来自哪里?这是用户输入的值吗?数据指的是从服务器api/消息中提取的JSON。我需要在url的末尾添加不同的ID来访问不同的页面。你想这样修改每个JSON对象吗?如果是这种情况,您需要为每个URL提供$http并对其进行迭代,或者在后端执行此操作。我不是在修改JSON对象,而是在$http.get()中调用的URL末尾添加唯一id,以便它可以提取正确的JSON,就像我上面包含的一样。我知道我必须迭代数据[I],但不知道如何定义它以便它在$http.get()中工作。有什么建议吗?抱歉搞混了。您所做的是正确的,只是JSON数据位于服务器中,并通过NodeJS以$http.get()获取,而不是在控制器中(这将由您的答案解决)。整个问题是每个JSON都必须在$http.get()之外获取,我不太确定在这个场景中如何定义“数据”来循环它们。这是否使问题更加清楚?
$http.get('/api/messages/' + messageId).success(function(data) {
    for (obj in data) {
        data[obj] += messageId;
    }
    //do something with data.
});