Datenaustausch und Datenlieferung ergänzen sich gegenseitig, lassen Sie uns dieses Problem gemeinsam diskutieren. Das erste, was zu sagen ist, ist, dass das Teilen und das Passieren beide skopiert sind. Umfang ist der Bereich, in dem es funktioniert. Daten können im gleichen Bereich geteilt werden. Wenn Sie diesen Umfang überschreiten, ist es Kreuzkope und die Datenübertragung muss verwendet werden.
Umfang
1.Ui Umfang
Jede UI -Datei hat standardmäßig eine entsprechende UI.js. Sie dienen als geschlossener Umfang. UI.js erhält UI -Objekte basierend auf der ID der Komponente in der UI -Datei. Verschiedene UI -Dateien können Komponenten mit derselben ID definieren. In UI.js definierte Variablen können in diesem JS nur zugegriffen werden.
2. Seite
Jedes Mal, wenn Sie OpenPage anrufen, wird eine neue Seite geöffnet, und diese neue Seite wird auf der alten Seite behandelt. Wenn sich die Gaumen schließt, wird die abgedeckte alte Seite freigelegt. Zusätzlich zur Haupt -UI -Datei kann jede Seite viele andere UI -Dateien enthalten, die sich im selben Seitenbereich befinden.
Wenn die Seite geschlossen ist, werden alle auf der Seite erstellten Objekte veröffentlicht.
3.App -Umfang
Dies ist der größte Umfang. Solange die App nicht beendet, ist dieser Bereich immer gültig.
App.js gehört zum App -Bereich, da es zu keiner Seite gehört.
Kurz gesagt, das App -Bereich enthält mehrere Seitenbereiche und das Seitenbereich mehrere UI -Bereiche.
Speicherfreigabe
Im Vergleich zu Dateien und Datenbanken sind Speichervorgänge viel schneller und für relativ kleine Datenoperationen geeignet. Der Nachteil ist, dass die App nach dem Schließen veröffentlicht wird. DeviceOne teilt den Speicher auf folgende Weise.
1..
Dies ist die Datenaustausch im App -Bereich. Dieses Stück Speicher ist eigentlich ein Schlüsselwertpaar, und ein Schlüssel entspricht einem Wert. Achten Sie also darauf, dass der vorherige Wert überschrieben wird, wenn ein Schlüssel neu zugewiesen wird. Die Methode der Verwendung ist sehr einfach. Siehe folgende Beispiele, lesen und schreiben Sie auf verschiedenen Seiten.
// Legen Sie den Wert in index.ui.js fest, der auf jedes JSON -Objekt mit Funktionsobjektausnahmen festgelegt werden kann. global.setMemory ("key1", 1); global.setMemory ("key2", "value1"); global.setMemory ("key3", ["a", "b", "c"]); var label = ui ("do_label_2"); // den Wert in memory/index.ui.js abrufen, können Sie direkt das JSON -Objekt var global = sm ("do_global"); var content = {}; content.key1 = Global.getMemory ("key1"); content.key2 = Global.Key1 = "key2") zurückgeben. global.getMemory ("key3") [1]; content.key4_k3 = global.getMemory ("key4") ["k3"];2. JavaScript Globale Variablen (Seitenumfang)
Verwenden Sie die eigenen Eigenschaften von JavaScript, um globale Variablen zu definieren. In der Regel können Sie globale Variablen definieren, um die Datenfreigabe in verschiedenen UI -Dateien auf derselben Seite zu realisieren. Wenn Sie sich auf das folgende Beispiel beziehen, lesen und schreiben Sie in verschiedenen UI -Dateien, befinden sich jedoch in einem Seitenbereich. Es ist auch sehr einfach zu bedienen, es gibt zwei Möglichkeiten zu:
Obwohl es sehr bequem ist, wird es nicht empfohlen, es zu verwenden, da es zu lässig ist. Wenn es sich um eine kollaborative Entwicklung oder ein komplexes Projekt handelt, ist es schwierig, bei einem Fehler zu lokalisieren und zu debuggen.
// Legen Sie die globalen Variablen von JS in test1.ui.js, zwei Möglichkeiten ein. // 1. Fügen Sie keine Var -Präfix -Variable Definition hinzu, key1 = "value1"; // 2. Definieren Sie globale Variablen auf DeviceOne Object Deviceone var content = {}; content.key1 = key1; content.key2_k3 = deviceOne.key2 ["k3"];3. JavaScript -Variablen (UI -Bereich)
Dies muss nicht zu viel erklärt werden, sondern ist die normale JS -Variable -Definition, die nur im aktuellen UI.JS -Bereich gültig sein kann.
var key1 = "value1";
4. Speichermodus von SQLite
SQLite ist normalerweise ein Dateimodus. Es gibt eine besondere Situation, in der SQLite direkt im Speicher verwendet werden kann. Es ist geeignet, um komplexe Datenstrukturen und störende Textvorgänge zu verwenden. Die Verwendung von SQL -Anweisungen ist viel flexibler.
Es kann nur einen Speichermodus geben, und der Name wird als /: Speicher festgelegt /:.
In der folgenden Beschreibung der SQLite -Datenbank werden wir sie ausführlich vorstellen.
Dateifreigabe
Dies ist für alle leicht zu verstehen. Die Dateifreigabe befindet sich im Bereich der App und kann auch nach der Neustart der App zugegriffen werden. Sie können Inhalte über die App überall in der App über die DO_Storage -Komponente schreiben und dann eine Datei von einer anderen Stelle von einem anderen Ort lesen, um den Inhalt zu lesen. Siehe folgende Beispiele, lesen und schreiben Sie auf verschiedenen Seiten. Was Sie hier beachten müssen, ist, dass das Lesen und Schreiben von Dateien normalerweise asynchron ist und Sie sicherstellen müssen, dass der Inhalt geschrieben wurde, bevor Sie ihn lesen können.
// Dateidatei 1 und Datei2 in index.ui.js schreiben, können Sie JSON -Objekte direkt schreiben var key1 = "value1"; Storage.writeFile ("Data: // Datei1", key1, function (data, e) {// Der Rückruf endet nur hier, um den Inhalt zu schreiben. : "v2", "k3": "v3", "k4": "v4"}; Storage.writeFile ("Data: // Datei2", Key2, Funktion (Daten, e) {// Der Rückruf endet hier nur, um den Inhalt nur zu schreiben. Wenn Sie die Datei hier lesen. DataCache = sm ("do_datacache"); var content = {}; content.key1 = Datacache.loadData ("key1"); content.key2_3 = Datacache.loadData ("key2") ["K3"]; 2); // FormatDO_SQLITE -Komponente greift auf Datenbankdaten zu
Diese Komponente ist eine MM -Komponente, was bedeutet, dass mehrere Instanzen erstellt werden können. Alle MM -Komponenten sind standardmäßig Seitenumfang oder App -Bereich. Erstellen Sie den dritten Parametermarkierungsbereich der MM -Komponente.
Es ist hier zu beachten, dass das Lesen und Schreiben von SQLite normalerweise asynchron sind. Sie müssen sicherstellen, dass der Inhalt geschrieben wurde, bevor Sie ihn lesen können.
1. App -Bereich:
// Erstellen Sie ein App-Scope SQLite-Objekt. Der zweite Parameter ist die Beschriftung dieses Objekts. Der dritte Parameterzeichen Der Bereich ist Appvar SQLite_App = mm ("do_sqlite", "sqlite_app_id1", "app") Funktion test_sqlite () {// verwenden dieses Objekt, um einen Datenbank -Test zu erstellen. Führen Sie eine SQL -Anweisung SQLite_App.executesync (STU_TABLE); // TABLE SQL ANTWORT STU_TABLE = "TABLE STU_TABLE CREATE (_id Integer); // Tabelle SQL Anweisung Stu_table =" TABLE STU_TABLE (_ID Inneger erstellen) erstellen. PRIMAL KEY AutoIncrement, Sname -Text, Schnüffelntext) "; // Synchron eine SQL -Anweisung SQLite_App.executesync (STU_TABLE); var stu_sql =" In stu_table (Sname, Schnüffeln) Werte ('Xiaoming', '01005') einfügen; Werte ('xiaoliu', '01007') "; // eine SQL -Anweisung Asynchron und sqlite_app.execute (STU_SQL, Funktion (Daten, e) {// Der Rückruf ist nur hier, dass es hier wirklich in die Daten einfügt. APP-SCOPE SQLITE-Objekt basierend auf der ID "SQLite_App_id1" und des zweiten Parameters ist die Beschriftung dieses Objekts. Datenbank, es müssen nicht mehr geöffnet werden // Abfrage SQL Anweisung var stu_query = "aus stu_table"; // eine Abfrageanweisung Synchron var result = sqlite_app.querysync (stu_query); test.db/n "+ json.Stringify (Ergebnis [1], NULL, 2);2. Seitenumfang:
// Erstellen Sie ein von Page-scoped SQLite-Objekt. Die einzige ID-Beschriftung ist memory_db_id1var sqlite_app = mm ("do_sqlite", "memory_db_id1", "Seite"); // Verwenden Sie dieses Objekt, um eine Speicherdatenbank in test1.ui.js zu erstellen. Dieser Name muss geschrieben werden als: Speicher: SQLite_App.open (": Speicher:"); // Tabelle SQL Anweisung var stu_table = "Droptabelle, wenn stu_table existiert; STU_TABLE (_id Integer Primärschlüssel AutoIncrement, Sname Text, Schnapperntext) "; // Synchron eine SQL -Anweisung SQLite_App.executesync (STU_TABLE); var stu_sql =" in stu_table (SNAME, SNUMBER) Werte ("Laoming", '1 "); Werte ('laohong', '2'); "+" In stu_table (sname, schnüffeln) Werte einfügen ('LAOLIU', '3') "; // Synchron eine SQL -Anweisung SQLite_App.executesync (STU_SQL) ausführen; // Abfragen Sie die in test1.ui.js erstellte Datenbanktabelle in test2.ui.js // Erstellen Sie das erstellte SQLite -Objekt var // Query SQL Anweisung erstellen var stu_query = "aus stu_table auswählen"; // eine Abfrageanweisung var result = sqlite_app.querysync (STU_Query);Datenerbringung
Die Datenerfassung umfasst Cross-Scope, z. B. die Übergabe von Daten in verschiedenen UI-Dateien und das Übergeben von Daten auf verschiedenen Seiten.
Die wichtigste und am häufigsten verwendete Methode ist der Nachrichtenmechanismus
1. Nachrichtenmechanismus
Wir werden diesen Link im Dokument ausführlich vorstellen.
Kurz gesagt, der Nachrichtenmechanismus kann Daten über UI -Bereiche oder Seitenbereiche hinweg übergeben.
2. OPENPAGE UND GESEMPAGE -PASS -Daten.
Diese Datenübertragung ist Kreuzungsumfang, ist jedoch auf zweischichtige Seiten begrenzt. Wenn Sie beispielsweise Seite 2 auf Seite1 öffnen, übergeben Sie einige Daten auf Seite 2. Seite 2 schließt sich selbst, enthält Seite1 und übergibt Daten an Seite1 zurück. Die Datenübertragung kann jedes JSON -Objekt sein.
Dies ist ein normaler und sehr guter Weg, und es wird empfohlen, es so zu verwenden.
// In index.ui.js, data var d = {"k1": "v1", "k2": "v2", "k3": "v3", "k4": "v4"}; App.OpenPage ({Quelle: "Quelle: //view/open_close_page/indEx.ui", Data: data: data: data: data: data: data: data: data: data: data: data: data: statebarstate: Akzeptieren Sie die übergebenen Daten, wenn die Seite open_close_page/index.ui geschlossen ist. page.on ("result", function (data) {if (data) nf.alert (json.stringify (data, null, 2));}) // Die von index.ui.js übergebenen Daten können den Wert durch getData erhalten. Die von Index. JSON -Objekt/N "+ JSON.Stringify (Daten, Null, 2); // Formatfunktion Close_me () {// Die Daten übergebene die Daten an die nächste Schicht von pageapp.closepage (" Ich habe die Daten übergeben, wenn open_close_page/index.ui geschlossen ist ";};};};}Ich werde so viel über das relevante Wissen über JS -Datenaustausch und die Datenübertragung vorstellen, die dieser Artikel Ihnen vorstellt. Ich hoffe, es wird für Sie hilfreich sein!