Как загрузить ListView, используя SQLite в Titanium?

Я на самом деле использую фреймворк Alloy. Я пытался в моей модели.js это:

var myBooks = Alloy.Collections.books;

Var getData = myBooks.fetch();

Однако для настройки ListView требуется получить тип Array, и, если честно, я знаю только, что с переменной getData у меня есть объект типа Backbone.Object, и я не понимаю, как его отобразить.

Спасибо заранее за любую помощь.

2 ответа

Решение

Я нашел ответ, нет необходимости анализировать значение в массиве и вызывать строку:

$.elementsOnList.section[0].setItems(books);

Интеад из вас может просто:

//Get a reference to our collection:
Alloy.Collections.books.fetch();

И в представлении.js используют свойства, которые предлагает Titanium через его каркас Alloy:

<Alloy>
  <Collection src="books" />
    <Window>
    <ListView defaultItemTemplate="by_name">
      <Templates>
        <ItemTemplate name="by_name">
          <View>
            <Label bindId="title"/>
          </View>
        </ItemTemplate>
      </Templates>
      <ListSection dataCollection="books">
        <ListItem title:text="{title}" />
      </ListSection>
    </ListView>
    </Window>
</Alloy>

И с этими несколькими строками кода мой список загружает данные из базы данных.

Это не написано для Alloy, но это код plug-and-play.

// Create main window
var win = Ti.UI.createWindow({
    backgroundColor:"#bbb",
    navBarHidden : true,
    orientationModes : [Titanium.UI.PORTRAIT]
});

// Install the database
var db = Ti.Database.install("myDB.sqlite", "myDB");
db.close();

// Create the empty array
var myBooks = [];

// Set data in the app
function setData(){
    var db = Ti.Database.open("myDB");
    // Select the "books" table in the database
    var rows = db.execute("SELECT * FROM books");
    while (rows.isValidRow()) {
    // Add each "title" under the books table to the array
    myBooks.push(rows.fieldByName("title"));
    rows.next();
    }
    rows.close();
    db.close();
    // Print the array
    Ti.API.info(myBooks);
}

// call the function
setData();

win.open();

Я просто создал простую базу данных в sqlite с одной таблицей "книги", а затем "заголовки" по книгам. В "Книги" я добавил три значения: "Книга первая", "Книга вторая" и "Книга третья".

Отсюда вы сможете использовать массив myBooks для добавления в свой ListView в Alloy.

Другие вопросы по тегам