Titanium - 保存并保留模型

时间:2014-12-27 19:06:22

标签: backbone.js model save titanium persist

我重写了官方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 个答案:

答案 0 :(得分:1)

我发现您的代码存在一个问题和一个问题:

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

$ index.open();

myBooks.fetch();

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

关注:您尚未添加将添加新书的代码。您添加新书代码应包含collection.add()和model.save()类型的行。这会将新书添加到当前显示的集合中,书籍将显示在列表中。它还会将书籍保存到持久存储中,因此它将存储在您的设备上。

标记