Seu problema não é com o U1DB, mas com o OptionSelector. Vamos considerar um exemplo mais simples:
import QtQuick 2.0
import Ubuntu.Components 1.0
MainView {
OptionSelector {
model: ListModel {
ListElement { name: "Item 1" }
ListElement { name: "Item 2" }
}
delegate: OptionSelectorDelegate {
text: i18n.tr(name)
}
onSelectedIndexChanged: {
console.log(name)
}
}
}
Quando o índice é alterado, obtemos o erro "ReferenceError: name is not defined". E por que esperamos que seja definido? Não definimos nenhuma variável chamada "name" e o OptionSelector não tem uma propriedade "name".
Por que podemos referenciar "nome" no delegado? Um novo objeto é criado a partir do delegado para cada elemento no modelo. Esse objeto obtém as propriedades desse elemento de lista e nossos elementos de lista contêm uma propriedade "name". Da mesma forma, no seu exemplo, o U1db.Query produziu elementos de lista com uma propriedade "contents", que evidentemente era um objeto com uma propriedade "name".
Se quisermos referenciar essas propriedades fora do delegado, precisamos entrar no modelo e extraí-lo:
console.log(model.get(selectedIndex).name)
No seu caso, o modelo é um U1db.Query, não um ListModel, portanto, ele não possui o método get()
. Ele tem uma lista results
que eu presumo que você possa indexar, mas eu não sei o suficiente sobre o U1db para dizer mais. Espero que isso seja o suficiente para você entrar no caminho certo.