javascript - Return specific object from a JSON object array -


here services.js looks like:

    var app = angular.module('starter.services', [])       .factory('studies',function($http,$filter){         var studies = [];         $http.get("studies.json").success(                 function(data){                     //studies = data;                     angular.copy(data, studies);                 }             );         single_object = $filter('filter')(studies, function (d) {return d.noderef === "56e3382b-9a76-48ee-9c14-907e71b7a184";})[0];         console.log(single_object);       return {         all: function(){           return studies;         }     };     }) 

so can see request json file contains objects attributes "noderef" happens attribute. want filter out specific object based on noderef matched. console.log returns "undefined" think perhaps because gets called before json file loaded. appreciate if provide solution.

you performing asynchronous request , firing filter before server's response, why getting undefined, because @ point, applying filter empty array.

you should move filter call inside success block make works want:

var app = angular.module('starter.services', [])

.factory('studies',function($http,$filter){     var studies = [];     $http.get("studies.json").success(             function(data){                 //studies = data;                 angular.copy(data, studies);                 single_object = filter("56e3382b-9a76-48ee-9c14-907e71b7a184");                 console.log(single_object);             }         );   function filter(node) {     if (studies.length > 0) {       return $filter('filter')(studies, function (d) {return d.noderef === node;})[0];     }   }   return {     all: function(){       return studies;     },     filtered: filter }; }) 

Comments