私のアプリケーションには、sqlite dbからデータをフェッチしてListViewのonNavigatingToページに表示する予定のスコアボードページがありますが、期待通りに機能しません。nativescriptアプリケーションでsqlite dbデータを表示する際に問題が発生する
結果を表示するためのXMLページ:
<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded" navigatingTo="onNavigatingTo">
<ActionBar title="Scoreboard">
<NavigationButton text="Back" android.systemIcon="ic_menu_back" tap="homeTap"/>
</ActionBar>
<StackLayout orientation="vertical">
<Label text="Your Performance Sheet"></Label>
<ListView items= "{{results}}" >
<ListView.itemTemplate>
<Label text="{{testname}}"/>
<Label text="{{score}}"/>
<Label text="{{percent}}"/>
</ListView.itemTemplate>
</ListView>
</StackLayout>
</Page>
スコアボード・ビューモデル:
var Observable = require("data/observable").Observable;
var ObservableArray = require("data/observable-array").ObservableArray;
var Sqlite = require("nativescript-sqlite");
function scoreViewModel (database) {
var viewModel = new Observable();
viewModel.results = new ObservableArray([]);
viewModel.select = function() {
this.results = new ObservableArray([]);
database.all("SELECT * FROM scores").then(rows => {
for (var row in rows) {
this.results.push(rows[row]);
}
}, error => {
console.log("SELECT ERROR", error);
})
}
viewModel.select();
return viewModel;
}
exports.scoreViewModel = scoreViewModel;
私はスコアテーブルからすべてのデータを選択し、viewModel.resultsアレイにプッシュしていますすでにビューにバインドされています。
scoreboard.jsは:
var observable = require("data/observable");
var scoreViewModel = require("./scoreboard-view-model").scoreViewModel;
var page;
var Sqlite = require("nativescript-sqlite");
exports.onNavigatingTo = function (args) {
page = args.object;
(new Sqlite("scoreboard.db")).then(db => {
db.execSQL("CREATE TABLE IF NOT EXISTS scores (id INTEGER PRIMARY KEY AUTOINCREMENT, testname TEXT, score TEXT, percent TEXT)")
.then(id => {
page.bindingContext = scoreViewModel(db);
}, error => {
console.log(error)
});
}, error => {
console.log(error);
});
}
誰かが私がリストビューに表示するデータを得るのを助けるしてください。
ちょっとダミー、データがデータベースから正しく戻ってきたことを確認しましたか?それが問題なのか、これが拘束力のある問題なのか疑問に思うだけです。一目でここにあるものはすべて妥当に見えます。 –
はいTJ、データがデータベースから送られてきたので、コンソールにログして確認しました。それは今働いている、それはビューモデルを編集して表示する。 –