在原生脚本应用程序中显示sqlite数据库数据有问题

Having issues displaying sqlite db data in nativescript application

本文关键字:sqlite 数据库 数据 有问题 显示 原生 脚本 应用程序      更新时间:2023-09-26

我的应用程序有一个计分板页面,应该从sqlite数据库中获取数据,并在ListView中显示它的onNavigatingTo页面,但它没有按预期的那样做。

显示结果的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>         

scoreboard-view-model:

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。结果数组,该数组已经绑定到视图。

.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);
});
}

有人请帮助我得到的数据显示在列表视图。

我通过编辑scoreboard-view-model.js文件,精确地在viewModel中得到了它的工作。选择功能:

viewModel.select = function () {
    //the line below was changed to this...
    //testname, score, and percent are column names in the scores table
    database.all("SELECT testname, score, percent FROM scores").then(rows => {
    for (var row in rows) {
        //the line below was changed too...     
        viewModel.results.push({testname: rows[row][0], score: rows[row][1], percent: rows[row][2]});
    }, error => {
        console.log("SELECT ERROR", error);
    })
}   

。它现在像预期的那样工作。感谢TJ Vantoll的帮助。真的感激。