push một giá trị trả về từ hàm $http.get vào một mảng không được .



  • Em sử dụng http.get từ một url trả về json rồi push json này vào một biến array nhưng sau khi thoát khỏi hàm get thì biến array lại rỗng . ai chỉ cho em với ạ . em mới học về javascript cũng như là angular
    myapp.controller('name',function($scope,$http){

    	  	$scope.user_taggets= new Array();
    	  	
    	  var url = "http://xxxx";
    	  
    	  $http.get(url).success(function(response){
    		       
    		        $scope.user_taggets.push(response);
    		      
    		    });	
    		    console.log($scope.user_taggets);
    

    });


  • Sailor

    Bởi vì nó chạy bất đồng bộ mà.
    Khi câu lệnh console.log($scope.user_taggets) chạy thì cái $http.get chạy chưa xong nên không thấy kết quả. Nếu muốn thấy kết quả thì bạn phải để lệnh console.log trong hàm success.



  • theo script của bạn, thì khi chạy bạn sẽ thấy nó log ra $scope.user_taggets(theo như bạn nói là rỗng).

    vì khi chạy từ trên xuống, gặp $http.get(url)...... nó vô, rồi nó sẽ làm bất đồng bộ(khi có kết quả nó sẽ trả về như bên trong hàm function(response){} của bạn).... xong nó xuống console.log phía của bạn lun.



  • @katanhich
    Anh ơi , giải thích giúp em chỗ này với ạ . như trên em $scope.user_taggets.push(response); thì user_taggets là một mảng thì sau khi push response thì em không in được trong phần view , còn nếu em cho user_taggets là một biến rồi gán $scope.user_tagggets = response thì nó nhận được và in ra được trong view .


  • Sailor

    Cái đó tùy thuộc vào response chứ, nếu response là mảng thì gán lại cho user_taggets, con nếu là object thì mới push vào mảng chứ.


Log in to reply