Cordova, Ionic Framework и AngularJS — поведение фабрики данных Angular

Я новичок в Cordova, Ionic Framework и Angular и столкнулся с препятствием при использовании factory.

Моя фабрика настроена следующим образом:

    angular.module('test.factories', ['ionic'])
.factory('dataFactory', function($http, $q, $timeout){
 dataFactory.getItems = function(search) {
  var deferred = $q.defer();
 //rest of code to get stuff from SB works fine

//an array used to push items to from sqlite3 tx.executeSql 
returnData = []; 
deferred.resolve(returnData);
return deferred.promise;
}
}

Все это прекрасно работает, я получаю данные в свой контроллер, и если это список, данные отображаются просто отлично, используя ng-repeat в представлении.

Однако я не могу получить доступ к определенному элементу в возвращаемом массиве:

dataFactory.getItems("name").then(function(results){
   $scope.results = results; //ng-repeat works fine with this
   var a1 = results[0]; //returns undefined
   for (var i=0;i<results.length;i++) { //doesn't enter the loop}
   console.log(results); //shows [{"item","value"}] - JSON.parse returns an error
   //chrome devtool bar shows it as an array, and I can drill down into the elements! so
  $scope.result = results[0]; //nothing is set
});

Это вызывает некоторую путаницу и проблемы, поскольку в некоторых случаях возвращается только 1 элемент, и я хотел бы отобразить определенные свойства в представлении, например {{result.property}}

Как я уже сказал, я очень новичок во всех этих фреймворках, поэтому, возможно, сделал что-то совершенно неправильно с фабрикой и т. Д., Но теперь меня это беспокоит, лол, как массив может быть массивом, но не ?!?

Любая помощь будет принята с благодарностью!

ура ребята


person Community    schedule 12.06.2014    source источник
comment
возможно, результаты завернуты в объект. если вы console.log результаты внутри then что вы видите?   -  person haki    schedule 12.06.2014
comment
обычная детализация в представление массива, вот что меня больше всего смущает! Я пробовал eval() и все виды... Массив[1] 0: Длина объекта: 1 proto: Массив[0]   -  person    schedule 12.06.2014
comment
JSON.stringify возвращает пустую строку typeof() возвращает объект   -  person    schedule 12.06.2014
comment
просто напечатайте его в консоли, добавьте, посмотрите, что выйдет. возможно, он неправильно сформирован.   -  person haki    schedule 12.06.2014
comment
вар выход = ; for (свойство var в элементе) { output += property + ': ' + item[property]+'; '; } console.log(выход); //пустой console.log(item.toString()); //не определено console.log(item); : //Array[1] 0: Object — это разворачивается в свойства json, как и ожидалось. length: 1 proto: Array[0] ааа, без форматирования! тлдр; - дает обозревателю объектов вид для массива   -  person    schedule 12.06.2014


Ответы (1)


Бах, ошибка новичка!!!

На моей фабрике я поместил deferred.resolve(data) не в то место, теперь я добавил его ниже итерации строки в функции успеха tx.executesql, и все в порядке!

спасибо за попытку Хаки

person Community    schedule 12.06.2014