我重写了官方Titanium文档(http://docs.appcelerator.com/titanium/latest/#!/guide/Creating_Your_First_Titanium_App)的“第一个应用程序”,但我不明白为什么我添加的新书如果重新启动应用程序就无法显示。
保存新模型不是book.save
方法吗?
从有关book.save
方法的官方文档
将该书添加到集合中并将其保存到数据库中。
更新:这是我的代码。它与官方文档相同。这是index.js
var myBooks = Alloy.Collections.books;
var book = Alloy.createModel('books', {
title : 'Great Expectations',
author: 'Charles Dickens'
});
myBooks.add(book);
book.save();
function showBook (event){
var selectedBook = event.source;
var args = {
title: selectedBook.title,
author: selectedBook.author
};
var bookview = Alloy.createController("bookdetails", args).getView();
bookview.open();
}
$.index.open();
这是index.xml
<Alloy>
<Collection src="books"/>
<Window class="container">
<!-- Add TableView and TableViewRow -->
<TableView dataCollection="books">
<TableViewRow title="{title}" author="{author}" onClick="showBook" ></TableViewRow>
</TableView>
<Menu id="menu" platform="android">
<MenuItem id="addBook" title="Aggiungi un libro" onClick="addBook" showAsAction="Ti.Android.SHOW_AS_ACTION_IF_ROOM" />
</Menu>
</Window>
还有bookview.js
但是要查看该书的详细信息。
答案 0 :(得分:1)
我发现您的代码存在一个问题和一个问题:
问题:你的index.js缺少一个fetch语句,尝试在index.js之后添加以下行
$ index.open();
myBooks.fetch();
fetch将从持久存储中获取数据。如果在index.js中添加此行,它将在打开窗口时填充表。
关注:您尚未添加将添加新书的代码。您添加新书代码应包含collection.add()和model.save()类型的行。这会将新书添加到当前显示的集合中,书籍将显示在列表中。它还会将书籍保存到持久存储中,因此它将存储在您的设备上。
标记