2016-11-24 3 views
1

私は初心者です。イオン1を使用して、ng repeatを使用してリストのデータベースからデータを表示したい場合、結果はビューに表示されません(HTML)。(アンドロイド用のgenymotionエミュレータ) 私は既にチュートリアルを試していますが、成功はありません。イオンフレームワークでng repeatを使用して、リストにあらかじめ埋め込まれたsqlite dbのデータを表示します。

マイコード:

Controllers.js

.controller('ExampleController', function($scope, $cordovaSQLite) { 

$scope.allSessions = []; 

$scope.selectAll = function() { 

var query = "SELECT * FROM meds"; 

$cordovaSQLite.execute(db, query, []).then(function(res) { 

    if(res.rows.length > 0) { 
     console.log("SELECTED -> " + res.rows.item(0).id + " " + res.rows.item(0).nom); 
     for (var i=0; i<res.rows.length; i++) { 

      $scope.allSessions.push({ 
       id: res.rows.item(i).id, 
       nom: res.rows.item(i).nom 
       }) 
     } 
    } else { 
     console.log("No results found"); 
    } 
}, function (err) { 
    console.error("error=>"+err); 
}); 
} 

app.js

var Myapp = angular.module('app', ['ionic', 'ngCordova',  'app.controllers']); 
var db = null; 
Myapp.run(function($ionicPlatform, $cordovaSQLite) { 
$ionicPlatform.ready(function() { 
if(window.cordova && window.cordova.plugins.Keyboard) { 

    cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    cordova.plugins.Keyboard.disableScroll(true); 
} 
if(window.StatusBar) { 
    StatusBar.styleDefault(); 
} 
window.plugins.sqlDB.copy("med.db",0, function() { 
     db = $cordovaSQLite.openDB({name: 'med.db', location: 'default'}); 
    }, function(error) { 
     console.error("There was an error copying the database: " + error); 
     db = $cordovaSQLite.openDB({name: 'med.db', location: 'default'}); 
    }); 
}); 
}); 

meds.html

<div> 
<ion-list> 
<ion-item ng-repeat="session in allSessions" href="#/app/session/{{session.id}}"> 
<h3>{{session.id}} {{session.nom}}</h3> 
</ion-item> 
</ion-list> 
</div> 

はしてください

助けが必要

答えて

0

それを実行します。

Controller.js

.controller('ExampleController', function($scope, $cordovaSQLite) { 

$scope.allSessions = []; 

$scope.selectAll = function() { 

var query = "SELECT * FROM meds"; 

$cordovaSQLite.execute(db, query, []).then(function(res) {  
    if(res.rows.length > 0) { 
     angular.forEach(res.rows, function(item)){ 
      $scope.allSessions.push({ 
      id: item.id, 
      nom: item.nom 
      }) 
    } 

    } else { 
     console.log("No results found"); 
    } 
}, function (err) { 
    console.error("error=>"+err); 
}); 
} 
+0

は機能しません。 エラー:[$ injector:modulerr] 11-24 15:21:16.344 I/chromium(1730)のためにモジュールapp.controllersをインスタンス化できませんでした:[$ injector:modulerr]モジュールappのインスタンス化に失敗しました。 :エラー:[$ injector:nomod]モジュール 'app.controllers'は利用できません!あなたはスペルが間違っています... ... 2) "、ソース:file:///android_asset/www/lib/ionic/js/ionic.bundle.js(17922) [INFO:async_pixel_transfer_manager_android.cc(60)]非同期ピクセル転送はサポートされていません [INFO:async_pixel_transfer_manager_android.cc(60)]非同期ピクセル転送はサポートされていません) ' – tsaadi

+0

これは注入エラーです。コントローラを確認して何かを忘れていないか確認してください 基本的には、 、angle.forEachの部分は残っているので大丈夫です。 – fernandoocf

+0

基本的には、アイテムの配列を持つres.rowsを調べる必要があります。各項目に対して、配列にプッシュしますallSessionsと呼ばれています... – fernandoocf

0
.controller('ExampleController', function($scope, $cordovaSQLite) { 

$scope.selectAll = function() { 

var query = "SELECT * FROM meds"; 

$cordovaSQLite.execute(db, query, []).then(function(res) {  
if(res.rows.length > 0) { 
$scope.allSessions = []; 
    for (var i = 0; i<res.rows.length; i++){ 
     $scope.allSessions.push({ 
     id: res.rows.item(i).id, 
     nom: res.rows.item(i).nom 
     }) 
} 

} else { 
    console.log("No results found"); 
} 
}, function (err) { 
console.error("error=>"+err); 
}); 
} 

は、ビューでNGリピートを使用して渡します。これは2017で完璧に動作するはずです。ここのコード

関連する問題