Cordova、Ionic Framework和AngularJS--Angular数据工厂行为。

问题描述 投票:0回答:1

我是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
});

这造成了一些混乱和问题,因为在某些情况下,只有一个项目被返回, 我想在视图中呈现特定的属性,例如: {{result.property}}

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

任何帮助将是非常感激的

cheers guys

angularjs cordova ionic-framework angularjs-factory
1个回答
0
投票

BAHHHHH新手错误!!!!!!!!!。

在我的工厂中,我把deferred.resolve(data)放在了错误的地方,现在我把它加到了tx.executesql成功函数中的行迭代下面,一切都好了!

谢谢你的尝试哈基

© www.soinside.com 2019 - 2024. All rights reserved.