钛 - 保存并保留模型添加

问题描述:

我已经重写了官方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但查看该书的细节。

+1

显示您的代码。 – seebiscuit 2014-12-28 03:13:14

+0

我已经添加了代码。我很抱歉,我认为这不是必须的,因为它与链接页面中的文档相同。谢谢。 – strano 2014-12-29 11:26:11

我看到一个问题,你的代码一个担忧:

问题:你的index.js缺少fetch语句,尝试后添加下面一行在你的index.js

$的.index 。打开();

myBooks.fetch();

fetch将从持久存储中获取数据。如果你在index.js中添加这行代码,它会在窗口打开时填充你的表格。

问题:你还没有添加你的代码来添加新书。您添加的新书籍代码应该包含一个collection.add()和一个model.save()类型的行。这会将新书添加到显示的当前集合中,该书将显示在列表中。它还会将图书保存到持久性存储中,以便将其存储在您的设备上。

马克

+0

非常感谢!这很有帮助! – strano 2015-01-05 18:29:01