Was ist der Anwendungsfall für ons.ready ()?

rancor1223

Ich versuche, eine App mit OnsenUI 2 (derzeit rc12) und jQuery (3.0.0) zu erstellen. Es gibt viele Beispiele, die ons.ready () verwenden, um ... etwas zu tun. Was mich verwirrt ist, dass das Beispiel Erste Schritte auf ihrer Website die Funktion verwendet. (Beide Beispiele sind Header der index.html)

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="lib/onsen/css/onsenui.css"/>
    <link rel="stylesheet" href="lib/onsen/css/onsen-css-components.css"/>
    <script src="lib/onsen/js/onsenui.js"></script>
    <script>
      ons.ready(function() {
        // Init code here
      });
    </script>
  </head>
  <body>
    <ons-navigator>
      <ons-page>
        Page 1
      </ons-page>
    </ons-navigator>
  </body>
</html>

Die Vorlagen in Visual Studio 2015 tun dies jedoch nicht.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="mobile-web-app-capable" content="yes" />

  <!-- JS dependencies (order matters!) -->
  <script src="scripts/platformOverrides.js"></script>
  <script src="lib/onsen/js/onsenui.js"></script>

  <!-- CSS dependencies -->
  <link rel="stylesheet" href="lib/onsen/css/onsenui.css" />
  <link rel="stylesheet" href="lib/onsen/css/onsen-css-components-blue-basic-theme.css" />

  <title>Onsen UI Tabbar</title>

  <!-- App init -->
  <script>
    function alertMessage(){
        ons.notification.alert('Tapped!');
    }

    document.addEventListener('init', function(event) {
      var page = event.target;
      if(page.id === "home-page") {
        var i = 5,
          onsListContent = '',
          onsListItem = document.querySelector('#main-list').innerHTML;

        while(--i) {
          onsListContent += onsListItem;
        }

        document.getElementById('main-list').innerHTML = onsListContent;
      }

      if(page.id === "settings-page") {

      }
    });
  </script>

Die OnsenUI-Dokumentation für die Registerkartenleiste (Layoutvorlage; wie im VS2015-Beispiel) verwendet sie jedoch (zeigt sie jedoch nicht im Kontext an).

ons.ready(function() {
  var myTabbar = document.querySelector("ons-tabbar")
  myTabbar.addEventListener("prechange", function(e) {
    if (e.index == 1) {
      e.cancel();
    }
  })
})

Die interaktiven OnsenUI-Tutorials sind dieselben. Etwa die Hälfte von ihnen benutzt es und die andere nicht. Wann soll ich es benutzen?

Ilia Yatchev

Ich denke, die kurze Antwort ist, es immer zu verwenden - auf diese Weise sparen Sie sich Ärger.

Grundsätzlich wird sichergestellt, dass die Funktion erst ausgeführt wird, nachdem die Onsen-Benutzeroberfläche bereit ist. Der Versuch, vor diesem Moment etwas zu tun, ist also ein wenig riskant. Grundsätzlich benötigt die Onsen-Benutzeroberfläche beim Starten Ihrer App einige Zeit, um alle Komponenten (alle ons-xxxElemente) sowie einige andere Dinge zu initialisieren .

In Bezug auf Ihre vorherige Frage - eigentlich versucht es auch universeller zu sein, so dass Sie die anderen 2 hier genannten Methoden nicht benötigen.

Außer auf seine Komponenten zu warten, wartet es auch DOMContentLoadedim Browser und devicereadybei Verwendung in einem Gerät mit Cordova / Phonegap usw.

Also im Grunde , wenn die Funktion ausgeführt wird Sie gewährleistet einen richtigen dom Baum, onsen ui Methoden auf den geladenen Elemente haben, sowie backbutton, pauseetc Ereignisse von cordova.

Wenn Sie nur einen einfachen Ereignis-Listener hinzufügen möchten, bei dem Sie mit onsen nichts Besonderes tun, können Sie ihn nicht verwenden, aber es ist nur sicherer und einfacher, wenn Sie dies tun. In den Demos wird es wohl die meiste Zeit nicht wirklich benötigt, aber manchmal fügen wir es einfach aus Gewohnheit hinzu. Mein Vorschlag wäre, es in allen Initialisierungen Ihrer Apps zu verwenden.

Und jetzt noch ein kleiner Hinweis zu Ihrer vorherigen Frage: Wenn Sie eine Seite in einer Registerkarte / einem Navigator / Splitter usw. verwenden, stellen wir nicht sicher, dass das Laden synchron ist, da Sie stattdessen auch die Möglichkeit haben, eine Seite vom Server zu laden.

Daher müssen Sie warten, bis die Seite selbst geladen ist (dies geschieht ons.readymeistens). Sie haben die initVeranstaltung bereits gefunden . Das ist es, was Sie in den meisten Fällen benötigen würden.

Sie können einen Handler auf zwei Arten hinzufügen:

// Pure JS
document.addEventListener('init', function(e){
    if (e.target.id === 'myPage') {
        // have fun
    }
});
// jQuery
$(document).on('init', function(e){
    if (e.target.id === 'myPage') {
        // have fun
    }
});

In jQuery können Sie einen Selektor als zusätzliches Argument hinzufügen, sodass Sie theoretisch auch in der Lage sein sollten, so etwas zu tun

$(document).on('init', '#myPage', function(e){
    // have fun
});

Beachten Sie, dass myPagedies die ID der Seite sein muss , nicht die Vorlage .

Bonus - Wenn Sie etwas direkt nach dem Anzeigen der Seite ausführen möchten (z. B. eine Animation), können Sie showstattdessen das Ereignis verwenden.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Was ist der Anwendungsfall für EPOLLET?

Was ist der Anwendungsfall für kalte Observable?

Was ist der Anwendungsfall für `dplyr :: select`?

Was ist der Unterschied zwischen dem Anwendungsfall für Erweiterungen und dem Anwendungsfall für Eltern?

Was ist der beabsichtigte Anwendungsfall für Git Stash?

Was ist der Anwendungsfall für unbeschränkte Warteschlange in Java Testamentsvollstrecker?

Was ist der Anwendungsfall für ContextCompat.checkSelfPermission?

Was ist der Anwendungsfall für "pip install -e"?

Was ist der Anwendungsfall für flatMap vs map in kotlin?

Was ist der Anwendungsfall für future.add_done_callback ()?

Was ist der primäre Anwendungsfall für asynchrone E / A.

Was ist der Anwendungsfall für den Convenience-Initialisierer?

Was ist der Anwendungsfall für die Option tsconfig "lib"?

Was ist der beabsichtigte Anwendungsfall für COMPLETE_ALIASES in zsh?

Was ist der richtige Anwendungsfall für NSURLSessions-Hintergrundsitzungen?

Was ist der Anwendungsfall für var mit Lambda-Ausdruck?

Was ist der Anwendungsfall für die Zusammenführung von Deklarationen?

Was ist der Anwendungsfall für "git branch -d"

Was ist der Anwendungsfall für einen anonymen Unionstyp?

Was ist der Anwendungsfall für doOnSuccess vs onSuccess in rxJava?

Was ist der Anwendungsfall für den Endpunkt des Trostthemas?

Was ist der mögliche Anwendungsfall für @Transactional(NEVER)

Was ist der Anwendungsfall für ein verschachteltes Funktionsmuster in Python?

Was ist der Anwendungsfall für var in ES6?

Was ist der Anwendungsfall für die MonadReader-Instanz für (->) r

Was ist der Anwendungsfall von TableCell?

Mehrere Audiokontexte, was ist der Anwendungsfall?

Was ist der Anwendungsfall von pipenv?

"Instanz von" "Typ von" Was ist der Anwendungsfall dafür?

TOP Liste

  1. 1

    Modbus Python Schneider PM5300

  2. 2

    Wie schließe ich mehrere Ordner mit der Variablen EXTRA_ARGS aus?

  3. 3

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  4. 4

    Elasticsearch startet nicht nach dem Laden in viele Daten

  5. 5

    ElasticSearch - Knotensperren konnten nicht abgerufen werden

  6. 6

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  7. 7

    Eclipse Oxygen - Projekte verschwinden

  8. 8

    Wie kann ich den Kaskadenmodus global einstellen?

  9. 9

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  10. 10

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  11. 11

    Bester Crawler, um festzustellen, ob er mit Technologien gebaut wurde?

  12. 12

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  13. 13

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  14. 14

    Wie füge ich eine Spalte in einer Zeile in der Ansible Jinja2-Vorlage mit der for-Schleife hinzu?

  15. 15

    Wie Verwenden von Httpclient mit jedem SSL-Zertifikat, egal wie „schlecht“ es ist

  16. 16

    Wie kann man eine Multi-Container-Anwendung in Steuerkarten erstellen?

  17. 17

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  18. 18

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  19. 19

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  20. 20

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  21. 21

    So erstellen Sie ein langes Etikett inline mit einem Eingabefeld

heißlabel

Archiv