我是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
BAHHHHH新手错误!!!!!!!!!。
在我的工厂中,我把deferred.resolve(data)放在了错误的地方,现在我把它加到了tx.executesql成功函数中的行迭代下面,一切都好了!
谢谢你的尝试哈基