Frage Jquery mobile Listview - Überprüfen Sie die Initialisierung abgeschlossen ist


Ich habe mich in eine Ecke eingeklinkt.

Ich muss anrufen listview("refresh") in einer Liste, aber es wurde möglicherweise nicht an dem Punkt initialisiert, an dem ich die Refresh-Methode aufruft.

Gibt es eine Möglichkeit zu überprüfen, ob die Komponente initialisiert wurde oder nicht?

Dies ist der Fehler, den ich bekomme:

Methoden können vor der Initialisierung in Listview nicht aufgerufen werden


13
2018-02-29 03:30


Ursprung


Antworten:


Wenn ein listview Widget ist initialisiert, es ist gegeben ui-listview Klasse, damit wir testen können, ob diese Klasse initialisiert wurde:

//select the listview
var $myUL = $('#my-ul-element');

//add a list-item to the listview
$myUL.append('<li>I\'m New!</li>');

//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 .trigger('create');
}

Dies sollte helfen, den Fehler zu beheben, den Sie bekommen.

Auch der .hasClass('[class]') Funktion kehrt zurück true/false wenn das Element das hat [class]: http://api.jquery.com/hasClass


21
2018-02-29 04:41



Versuchen

$list.listview();
$list.listview('refresh');

3
2018-02-29 03:40



Für mich war die Lösung dieser Nachricht hinzuzufügen data-role="listview" zu meinem ul Element. Ich könnte dann die Methode verwenden .listview('refresh') in meinen Eventhandlern.


0
2018-01-26 13:29



Sie können einfach eine globale Variable erstellen

var is_mobile_init = false;

ganz oben in Ihren Skripten. dann setze es auf wahr, nachdem du jquery mobile eingebunden hast.

dann vor dem Aktualisieren schreiben,

if (is_mobile_init)
    $myUL.listview('refresh');

Auf diese Weise müssen Sie nicht alle verschiedenen Klassen im Auge behalten und es ist intuitiv


-1
2017-12-20 08:40