Ng-repeat不更新数组

时间:2017-03-13 22:58:49

标签: javascript angularjs arrays

正如标题所说,我的参考切换存在问题。 我的HTML:

div ng-repeat="data in parseurl">
{{data.url}}
</div>

在我的JS代码中,我试图做两件事。第一步是从服务器获取数据并将其放入一个数组(称为allsongs)。然后,我解析数据并将其放入另一个数组(parseurl)。

var app = angular.module("write", []);  
app.controller("Ctrl",  ['$scope', '$http', function($scope, $http){
    $scope.allsongs = [];
    $scope.parseurl = [];
    $scope.getstuff = function(){
            $http.get("my link here").then(function(response){
               $scope.allsongs = response.data; 
                }); //step one -> this works!

    $scope.parser(); //step two
    };

   $scope.parser = function()
    {
    for(i=0;i<$scope.allsongs.length;i++) {
    for(var key in $scope.allsongs[i]) {
        var value = $scope.allsongs[i][key];
        var object = {Url : value.Url}; //this does contain the correct info I want
        $scope.parseurl.push(object); 
    }

$scope.getstuff();
}]);

所以正在发生的事情是,如果我在allsongs上重复,那么我会得到一堆未解析的网址。但如果我在parseurl上重复,那么我什么也得不到。显然,参考文献并没有改变,但我怎么能这样做呢?

1 个答案:

答案 0 :(得分:2)

在收集数据后需要调用

$scope.parser()。将它放入你的promise回调函数中,如下例所示。请注意$http是一个异步函数。以这种方式$scope.parser()在您的请求完成之前执行。

$scope.getstuff = function(){
    $http.get("my link here").then(function(response){
        $scope.allsongs = response.data;
        $scope.parser();
    });
};