Javascript 在angularJs中读取json数据时出现问题

Javascript 在angularJs中读取json数据时出现问题,javascript,json,angularjs,Javascript,Json,Angularjs,我试图读取一个json文件,其中包含歌曲列表和图像的url {"songs" : [ { "SongName" : "Broken Dreams", "image" : "img/browser.svg" }, { "SongName" : "My heart goes on", "image" : "img/browser.svg" }, { "SongName" : "Summer of 69", "image" : "img/browser.

我试图读取一个json文件,其中包含歌曲列表和图像的url

{"songs" : [
{
    "SongName" : "Broken Dreams",
    "image" : "img/browser.svg"
},
{
    "SongName" : "My heart goes on",
    "image" : "img/browser.svg"
},
{
    "SongName" : "Summer of 69",
    "image" : "img/browser.svg"
},
{
    "SongName" : "Broken Hearted Girl",
    "image" : "img/browser.svg"
},
{
    "SongName" : "American idiot",
        "image" : "img/browser.svg"
    }
]}
但基本问题是,当我使用$http.get()时,它读取json,但我无法将其分配给angularJS对象,这是我的angularJS代码

var app = angular.module('TheSlideShow', []);
        app.controller('mainController', ['$scope', '$http', function($scope, $http){

            $scope.test = "this is a test string";
            $scope.songList = {};

                $http.get("Data/SongList.json", ['$scope']).success(function(List){ $scope.songList  = List.songs;  console.log("The Length : " + $scope.songList.length);});

            for(var i = 0; i< $scope.length; i++)
                {
                    console.log("loop number" + i);
                }

        }]);
var-app=angular.module('TheSlideShow',[]);
app.controller('mainController',['$scope','$http',函数($scope,$http){
$scope.test=“这是一个测试字符串”;
$scope.songList={};
$http.get(“Data/SongList.json”,['$scope']).success(函数(List){$scope.SongList=List.songs;console.log(“长度:+$scope.SongList.Length);});
对于(变量i=0;i<$scope.length;i++)
{
控制台日志(“循环编号”+i);
}
}]);
长度字段给出的结果为5,但我的for循环甚至一次都没有运行。

错误数

  • 您不应将
    $scope
    传递给
    $http.get
  • 您无法直接在ajax外部获取
    $scope.songList
    值,该值是通过ajax调用填充的,因此您需要在ajax内部运行for loop success
  • 代码

    $http.get("Data/SongList.json").success(function(List){ 
      $scope.songList  = List.songs;  
      console.log("The Length : " + $scope.songList.length);
      for(var i = 0; i< $scope.songList.length; i++)
      {
         console.log("loop number" + i);
      }
    });
    
    $http.get(“Data/SongList.json”).success(函数(列表){
    $scope.songList=List.songs;
    log(“长度:+$scope.songList.Length”);
    对于(变量i=0;i<$scope.songList.length;i++)
    {
    控制台日志(“循环编号”+i);
    }
    });
    
    嘿,谢谢你提醒我关于$scope变量的事,我当时正在使用hit-and-trial方法,但忘了删除它。我想将json中的数据用于另一个函数,还有其他方法吗?我的意思是如何将我的歌曲列表传递给不同的函数?javascript在控制器中起作用吗?是的!该函数将位于同一控制器内!您可以轻松地将其作为参数传递,如
    $scope.someFunction($scope.songList)
    &函数将是
    $scope.someFunction=function(songs){//you cang here}
    您链接的问题基于jquery,我正在寻找angularJS方式!