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 に答える