2016-11-16 34 views
0

我的應用程序有一個記分板頁面,該頁面應該從sqlite數據庫中獲取數據,並將其顯示在ListView的導航到頁面中,但不會按預期方式執行。在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); 
}); 
} 

有人請幫我把數據列表視圖展現出來。

+0

嘿Dammy,你確認數據是否正確地從你的數據庫返回?只是想知道這是否是問題,還是這是一個具有約束力的問題。一目瞭然,您在這裏的一切看起來都很合理。 –

+0

是TJ,數據來自數據庫,我將它記錄到控制檯以確保。它現在正在工作,通過編輯視圖模型來顯示它。 –

回答

1

我把它通過編輯記分牌 - 視圖 - model.js文件的工作,正是在viewModel.Select功能:

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試圖提供幫助。非常感謝。

+0

真棒:)很高興你有它的工作。 –

+0

也感謝您將解決方案留在這裏讓其他人從中受益。 –

+0

這是我至少可以做到的。 –

相關問題