2014-09-18 2 views
0

나는 이것을 수행하는 가장 좋은 방법을 찾아 내려고 노력하고있다. 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; 

}]); 
+0

아무에게도 답변이 없습니까 ?? –

답변