0

我是 Cordova、Ionic Framework 和 Angular 的新手,并且在使用工厂时遇到了障碍。

我的工厂设置如下:

    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}}

正如我所说,我对所有这些框架都很陌生,所以可能在工厂等方面做了一些完全错误的事情,但它现在困扰着我,哈哈,一个数组怎么可能是一个数组,但不是?!?

非常感激任何的帮助!

欢呼伙计们

4

1 回答 1

0

BAHHHHH 菜鸟错误!!!

在我的工厂中,我将 deferred.resolve(data) 放在了错误的位置,现在我已将其添加到 tx.executesql 成功函数中的行迭代下方,一切都很好!

感谢您尝试 Haki

于 2014-06-12T12:50:07.647 回答