나는 이것을 수행하는 가장 좋은 방법을 찾아 내려고 노력하고있다. WebSQL 테이블에 데이터를 삽입하고 테이블에서 데이터를 선택하고 ng-repeat를 사용하여 화면에 표시하려고합니다. 이 각도 WebSQL 모듈 https://github.com/paulocaldeira17/angular-websql#select-all을 사용하고 있습니다. 지금까지 원격 데이터를 가져 와서 로컬 데이터베이스에 삽입 할 수있었습니다. 삽입 데이터를 호출하려고하면 $ scope.localproducts에 빈 배열이 표시됩니다. console.log ($ scope.localproducts)는 빈 배열을 표시합니다. 내 ng-repeat에 localproducts 범위를 사용합니다.Websql을 선택 각도 JS를 사용하여
Factory의 selectAllData 함수에서 ProductsFactory.localproducts 배열을 내 컨트롤러로 반환 할 수 없습니다.
내 페이지에서 버튼을 클릭하면 내 컨트롤러에서 insertData 함수를 호출합니다.
내가 여기서 잘못 했습니까? 나는 꽤 새로운 각도에있어 누군가가 나에게 아래의 코드를 향상 시키는데 도움이되는지, 아니면 이것을 할 수있는 더 좋은 방법이 있는지 제안 해 주시면 고맙겠습니다.
.controller('DownloadProductsCtrl', ['$scope','ProductsFactory', function ($scope, ProductsFactory){
$scope.products = ProductsFactory.products;
$scope.localproducts = ProductsFactory.localproducts;
$scope.insertData = function(){
ProductsFactory.getRemoteData().then(function(results){
$scope.localproducts = ProductsFactory.localproducts;
console.log($scope.localproducts); //This shows an empty array
});
}; }])
.factory('ProductsFactory', ['$webSql', function($webSql){
db = $webSql.openDatabase('myappdb', '1.0', 'Test DB', 2 * 1024 * 1024);
ProductsFactory = {};
ProductsFactory.products = [];
ProductsFactory.localproducts = [];
ProductsFactory.getRemoteData = function() {
return $http.get('./products/list.json')
.success(function (data) {
ProductsFactory.products = data;
ProductsFactory.insertData(data);
})
.error(function() {
console.error('Error');
});
};
ProductsFactory.insertData = function (data){
angular.forEach(data, function(value, key) {
db.insert('products', value).then(function(results) {
<!-- In here I like to count the total inserted items and display it on the page, but not sure sure how to send it to a scope in my controller -->
});
});
ProductsFactory.selectAllData();
};
ProductsFactory.selectAllData = function(){
db.selectAll("products").then(function(results) {
for(var i=0; i < results.rows.length; i++){
ProductsFactory.localproducts.push(results.rows.item(i)); //This added data to the array successfully.
}
console.log(ProductsFactory.localproducts); //This shows an empty array
});
};
return ProductsFactory;
}]);
아무에게도 답변이 없습니까 ?? –