2009-09-04 11 views
1

Pour ma pré-application Palm, j'ai une liste générée dynamiquement (extraction des données de SQLite, chargement dans le modèle, liaison). Cela fonctionne très bien, mais maintenant je dois ajouter un bouton on/off à chacun des éléments générés dynamiquement. Y compris le commutateur à bascule dans le modèle fonctionne, mais je ne peux pas affecter la fonctionnalité du widget correctement. J'essaye de lier le widget dans la scène, mais pas de chance jusqu'ici.Comment créer des boutons à bascule dans une liste rendue dynamiquement

Est-ce que quelqu'un connaît des didacticiels webOS (ou a un exemple) sur la façon de lier des widgets dans une liste dynamique?

Répondre

0

obtenu une réponse de la Palm Dev se de:

Si vous utilisez la propriété .value d'un bouton à bascule pour régler son état, vous ne pas appeler setupWidget sur le bouton à bascule du tout. Au lieu de cela, liez une propriété .value à chaque modèle d'élément de liste. Voici les étapes:

1. Dans le modèle de liste item.html:

<div class='palm-row'> 
    <div class='palm-row-wrapper'> 
     <div x-mojo-element="ToggleButton"></div> 
     #{title} 
    </div> 
</div> 

2. Dans la fonction de configuration liste-assistant.js (note, je l'utilise jQuery)

Mojo.Event.listen(jQuery("#my-list").get(0), Mojo.Event.propertyChange, this.listPropertyChangeHandler.bind(this)); 

3. Dans le listPropertyChangeHandler

ListAssistant.prototype.listPropertyChangeHandler = function(event){ 
    var newValue = event.model.value; 
} 
0

Ce n'est pas élégant, mais une façon d'y parvenir est d'utiliser la propriété onItemRendered de l'assistant de listes.

La fonction affectée passe le widget de liste, le modèle d'élément et le nœud d'élément. Dans ce gestionnaire, vous pouvez ensuite trouver votre widget à bascule dans le nœud de l'élément, et joindre votre fonctionnalité.

Quelque chose comme ceci:

onItemRendered: function(listWidget, itemModel, itemNode){ 
    var item = itemNode.select('div.mywidget').first(); 
    Mojo.Event.listen(item, Mojo.Event.tap, this.handleTap.bind(this)); 
}.bind(this) 

Il y a quelques exemples de la façon d'utiliser onItemRendered dans le code source pour la construction dans les applications. L'application Tâches, par exemple, permet d'annuler la possibilité de supprimer des éléments "spéciaux".