2017-10-28 9 views
0

リストにデータを表示しようとしていますが、表示されません。私も、私は通過しているが、それは動作していない私のデータをログにコンソールしようとしました。ng-rupeat ionic - リストにデータを表示

<ion-view view-title="Chats"> 
<ion-content ng-controller="TodoCtrl"> 
<ion-list> 
    <ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="task in tasksArray" type="item-text-wrap"> 
    <p>{{task.name}}</p> 
    <i class="icon ion-chevron-right icon-accessory"></i> 
    </ion-item> 
</ion-list> 


$scope.tasksArray = [ 
$cordovaSQLite.execute(db, query).then(function(result) { 
    let tasks = []; 
    if (result.rows.length > 0) { 
    for (var i = 0; i < result.rows.length; i++) { 
     tasks.push({ name: result.rows.item(i).name, skill: result.rows.item(i).description}); 
    } 
    return tasks; 
    }; 
}) 
]; 
debugger 

私はそれをデバッグしscope.tasksArryをチェック毎回それは私に[Promise]ものではなく、私が欲しいのデータのようなものを提供します。 助けてください

+0

こんにちはニック、console.log(結果)できますか?出力は何ですか? –

+0

ここにコントローラコードを追加してください。 –

+0

@ MarkoSavicコンソールの結果は私とオブジェクトを与え、それは私がresult.rowを行うと、私が望むものが得られますが、問題はresult.rowsのように戻ってきません。 –

答えて

0

あなたは$cordovaSQLite.executeが非同期操作の結果として約束を返すので、結果として[Promise]を持っています。

$scope.tasksArray = []; 

$cordovaSQLite.execute(db, query).then(function(result) { 
    if (result.rows.length > 0) { 
    for (var i = 0; i < result.rows.length; i++) { 
     $scope.tasksArray.push({ name: result.rows.item(i).name, skill: result.rows.item(i).description}); 
    } 
    }; 
}); 
0

あなたは$cordovaSQLite.executeに結果として[Promise]を処理する必要が

 .controller('DbCtrl', function($scope,DbService) { 

      $scope.tasksArray = []; 

      DbService.getData(db, query) 
       .success(function(data) { 
        if(data && data.length){ 
         $scope.tasksArray = data; 
        } 
       }).error(function(data) { 
        console.log(data); 
        $scope.tasksArray = []; 
       }); 
      }); 
     }) 

、それは次のコード

 .factory('DbService', ['$q', '$http','$window','$cordovaSQLite', function ($q, $http,$window,$cordovaSQLite) { 
      return { 
       getData: function(db,query) { 
         var deferred = $q.defer(); 
         var promise = deferred.promise; 
         var response = {result : '',error : ''}; 
         $cordovaSQLite.execute(db, query) 
          .then(function(result) { 
           response.result = result.rows; 
           deferred.resolve(response); 
          }, function(error) { 
           response.error = error; 
           deferred.reject(response); 
          }) 
         promise.success = function(fn) { 
          promise.then(fn); 
          return promise; 
         } 

         promise.error = function(fn) { 
          promise.then(null, fn); 
          return promise; 
         } 

         return promise; 
       } 
      } 
     }]); 

そして、あなたのコントローラの使用で..あなたを助ける次のサンプルコードをご確認ください方法。

サンプルデモをhereに確認してください。

これがあなたを助けてくれることを願っています!

関連する問題