正如标题所说,我在引用切换方面遇到了问题。 我的 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();
}]);
所以发生的事情是,如果我 ng-repeat allsongs,那么我会得到一堆未解析的 url。但是如果我在 parseurl 上 ng-repeat,那么我什么也得不到。显然引用没有改变,但我该怎么做呢?
最佳答案
$scope.parser()
需要在接收到数据后调用。将它放入您的 promise 回调函数中,如下例所示。请注意,$http
是一个异步函数。这样,$scope.parser()
就在您的请求完成之前执行了。
$scope.getstuff = function(){
$http.get("my link here").then(function(response){
$scope.allsongs = response.data;
$scope.parser();
});
};
关于javascript - Ng-repeat 不更新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774955/