J’ai codé mon chemin dans un coin.
Je dois appeler listview("refresh")
sur une liste, mais celle-ci n’a peut-être pas été initialisée au moment où j’appelle la méthode de rafraîchissement.
Existe-t-il un moyen de vérifier si le composant est initialisé ou non?
C’est l’erreur que j’obtiens:
ne peut pas appeler les méthodes sur listview avant l’initialisation
Lorsqu’un widget listview
est initialisé, il reçoit la classe ui-listview
. Nous pouvons donc tester pour cette classe si elle a été initialisée:
//select the listview var $myUL = $('#my-ul-element'); //add a list-item to the listview $myUL.append('I\'m New! '); //check if the listview has the ui-listview class if ($myUL.hasClass('ui-listview')) { //this listview has already been initialized, so refresh it $myUL.listview('refresh'); } else { //this listview has not yet been initialized, so it gets initialized $myUL.listview();//or you can use .sortinggger('create'); }
Cela devrait aider à atténuer l’erreur que vous obtenez.
De plus, la fonction .hasClass('[class]')
renvoie true
/ false
si l’élément a la [class]
: http://api.jquery.com/hasClass
Essayer
$list.listview(); $list.listview('refresh');
Pour moi, la solution à ce message a été d’append data-role="listview"
à mon élément ul
. Je pourrais ensuite utiliser la méthode .listview('refresh')
dans mes gestionnaires d’événements.
vous pouvez simplement créer une variable globale
var is_mobile_init = false;
au sumt de vos scripts. puis définissez-le sur true après avoir inclus jquery mobile.
puis avant de rafraîchir écrire,
if (is_mobile_init) $myUL.listview('refresh');
De cette façon, vous n’avez pas besoin de suivre toutes les classes et c’est intuitif