Problems with $ http and ng-repeat angularjs beginner $$ hashKey

4

Hello, I'm a beginner in Angular and I'm finding it very nice, my problem is this:

I have a ng-repeat that works fine when I get the data source of a javascript variable like this:

var alertsq = [  
{  
    "alert":"mediun",
    "nt":"28",
    "nu":"28",
    "no":"34",
    "dtini":"2012/Jul/23",
    "no":"3",
    "dtoc":"23/7/2012",
    "dtuo":"25/7/2012",
    "id":"227529436529033216",
    "msg":"Uh oh, this could be bad. Check the door lock vendor before you book you next hotel room: http://t.co/n56emZf2"
},
{  
    "alert":"mediun",
    "nt":"28",
    "nu":"28",
    "no":"34",
    "dtini":"2012/Jul/23",
    "no":"3",
    "dtoc":"23/7/2012",
    "dtuo":"25/7/2012",
    "id":"227529436529033216",
    "msg":"Uh oh, this could be bad. Check the door lock vendor before you book you next hotel room: http://t.co/n56emZf2"
}];

My controller that takes the variable alertsq and arrow in scope is like this:

app.controller("alertsController", function(){    
    console.log(alertsq);
    this.alerts = alertsq;
}); 

The cool thing is that this works and my list in *ng-repeat* is filled beautifully, but when I use $ http to load a JSON content from a file it does not populate the list: of the controller looks like this:

app.controller("alertsController", function($http,$scope){    
    $http({
        url: "data/alerts.json",
        dataType: "json",
        method: "GET",
        headers: {
          "Content-Type": "application/json"
        } 
    }).success(function(data){
        $scope.alerts = data;
        console.log($scope.alerts);
    }).error(function(error){
        console.log(data);
        console.log(error);
    });
}); 

The cool thing is that JSON is coming right out of the browser in the first case in that the list is filled is like this:

mainController controller.js:7

 [Object, Object, Object, Object, Object, Object, Object]
     0: Object
     $$hashKey:"object:4" 
     alert: "mediun"
     dtini: "2012/Jul/23"
     dtoc: "23/7/2012"    
     dtuo: "25/7/2012"
     id: "227529436529033216"
     msg: "Uh oh, this could be bad. Check the              
     door lock vendor before you book you next hotel room:       
     http://t.co/n56emZf2"
     no:"3"    
     nt: "28"
     nu: "28"__proto__: 
    Object1: 
    Object2:

And this is the output of the console when I search for $ http the JSON:

 [Object, Object, Object, Object, Object, Object, Object]
 0: Object 
 alert: "mediun"
 dtini: "2012/Jul/23"
 dtoc: "23/7/2012"    
 dtuo: "25/7/2012"
 id: "227529436529033216"
 msg: "Uh oh, this could be bad. Check the              
 door lock vendor before you book you next hotel room:       
 http://t.co/n56emZf2"
 no:"3"    
 nt: "28"
 nu: "28"__proto__: 
Object1: 
Object2:

The detail is that in the output obtained by JSON through $ http there is no $$ hashKey attribute, and so the list in ng-repeat is not filled :(, can anyone help me to solve this?

Thank you for your attention!

    
asked by anonymous 10.12.2014 / 00:26

2 answers

1

Hello, I had problems with json bringing javascript objects, ng-repeat can not work with objects, I had to use a filter object2Array.

ng-repeat="item in items | object2Array "

minhaApp.filter('object2Array', function(){
    return function(input){
        return angular.fromJson(input);//out;
    }
});
    
27.12.2014 / 16:16
0

Let's go, things I found strange:

}).success(function(data){
        $scope.alerts = data;
        console.log($scope.alerts);
    }

You are returning a JSON as soon as its default arrival format is:

{index:valor}

In assignment this data that you are assigning to $scope.alerts should be data.index , why does the data actually return you a set of objects and not an arrayList

Well, I do not know if this could be the error, but if you want to try,

NOTE: Instead of configuring $ http, use the preconfigured ones themselves! Example:

$http.get('linkdarequisição')
    .success(function(data){
       //codigo
    })
    
20.12.2014 / 22:01