Berbagi data dan pengiriman data saling melengkapi satu sama lain, mari kita bahas masalah ini bersama -sama. Hal pertama yang perlu dikatakan adalah bahwa berbagi dan passing keduanya tersingkir. Lingkup adalah area tempat ia bekerja. Data dapat dibagikan dalam ruang lingkup yang sama. Jika Anda melebihi ruang lingkup ini, itu adalah lingkup silang, dan transmisi data harus digunakan.
Cakupan
1.UI SCOPE
Setiap file UI memiliki UI.js yang sesuai secara default. Mereka berfungsi sebagai lingkup tertutup. UI.js memperoleh objek UI berdasarkan ID komponen dalam file UI; File UI yang berbeda dapat mendefinisikan komponen dengan ID yang sama. Variabel yang didefinisikan dalam UI.js hanya dapat diakses dalam JS ini.
2. Singkirkan Halaman
Setiap kali Anda menelepon OpenPage, halaman baru akan dibuka, dan halaman baru ini akan dibahas di halaman lama. Ketika Closeepage menutup dengan sendirinya, halaman lama yang tertutup akan diekspos. Selain file UI utama, setiap halaman juga dapat berisi banyak file UI lainnya, yang berada di ruang lingkup halaman yang sama.
Saat halaman ditutup, semua objek yang dibangun di halaman akan dirilis.
3. Lingkup
Ini adalah ruang lingkup terbesar. Selama aplikasi tidak keluar, ruang lingkup ini akan selalu valid.
App.js milik ruang lingkup aplikasi karena itu bukan milik halaman apa pun.
Singkatnya, ruang lingkup aplikasi berisi beberapa lingkup halaman, dan ruang lingkup halaman berisi beberapa lingkup UI.
Berbagi Memori
Dibandingkan dengan file dan basis data, operasi memori jauh lebih cepat dan cocok untuk operasi data yang relatif kecil. Kerugiannya adalah bahwa aplikasi dirilis setelah ditutup. DeviceOne berbagi memori dengan cara berikut.
1. Operasi memori do_global (lingkup aplikasi)
Ini adalah berbagi data dalam ruang lingkup aplikasi. Sepotong memori ini sebenarnya adalah pasangan nilai kunci, dan kunci sesuai dengan nilai, jadi berhati-hatilah bahwa jika kunci dipindahkan, nilai sebelumnya akan ditimpa. Metode penggunaan sangat sederhana. Lihat contoh -contoh berikut, baca dan tulis di halaman yang berbeda masing -masing.
// Atur nilai di index.ui.js, yang dapat diatur ke objek JSON apa pun, dengan pengecualian objek fungsi. Global.setMemory ("Key1", 1); Global.setMemory ("Key2", "Value1"); Global.setMemory ("Key3", ["A", "B", "C"]); Global.setMemory ("Key4", {"K1": "V1", "K2" "," V2 "", "" K1 ":" V1 "," K2 "," V2, "V2," V2, "V2," V2, "V2," V2, "V2," V2, "V2," V2, "V2," V2, "V2," V2, "V2," V2, "V2," V2, "V2," V2 "," V2, "V2", "V2", "V2", "V2", "V2," V2, "V2," V2, "V2," V2, "V2," V2, "V2, var label = ui ("do_label_2"); // Dapatkan nilainya di memori/index.ui.js, Anda dapat secara langsung mengembalikan objek json var global = sm ("do_global"); var content = {}; content.key1 = global.getMory ("key1"); content.key2 = global.getMemory (" global.getMemory ("Key3") [1]; content.key4_k3 = global.getMemory ("key4") ["k3"]; label.text = json.stringify (konten, null, 2); // format2. Variabel Global Javascript (Lingkup Halaman)
Gunakan karakteristik JavaScript sendiri untuk mendefinisikan variabel global. Anda biasanya dapat mendefinisikan variabel global untuk mewujudkan berbagi data dalam file UI yang berbeda di bawah halaman yang sama. Mengacu pada contoh berikut, baca dan tulis dalam file UI yang berbeda, tetapi berada dalam ruang lingkup halaman. Ini juga sangat mudah digunakan, ada dua cara untuk:
Meskipun sangat nyaman, tidak disarankan untuk menggunakannya karena terlalu santai. Jika ini adalah pengembangan kolaboratif atau proyek yang kompleks, sulit untuk menemukan dan men -debug jika ada bug.
// Tetapkan variabel global JS di test1.ui.js, dua cara. // 1. Jangan menambahkan definisi variabel awalan var, key1 = "value1"; // 2. Tentukan variabel global pada perangkat perangkat deviceOne.key2 = {"k1": "v1", "k2": "v2", "k3": "v3", "k4": "v4"} // dapatkan variabel global. var content = {}; content.key1 = key1; content.key2_k3 = deviceOne.key2 ["k3"];3. Variabel Javascript (lingkup UI)
Ini tidak perlu dijelaskan terlalu banyak, tetapi merupakan definisi variabel JS normal, yang hanya dapat valid dalam ruang lingkup UI.js saat ini.
var key1 = "value1";
4. Mode memori SQLite
SQLite biasanya merupakan mode file. Ada situasi khusus di mana SQLite dapat digunakan secara langsung dalam memori. Sangat cocok untuk cara menggunakan struktur data yang kompleks dan operasi teks yang merepotkan. Menggunakan pernyataan SQL akan jauh lebih fleksibel.
Hanya ada satu mode memori, dan namanya ditetapkan sebagai /: memori /:.
Dalam deskripsi berikut dari database SQLite, kami akan memperkenalkannya secara rinci.
Berbagi file
Ini mudah dimengerti oleh semua orang. Berbagi file ada di ruang lingkup aplikasi dan juga dapat diakses setelah aplikasi dimulai kembali. Anda dapat menulis konten ke file di mana saja di aplikasi melalui komponen Do_Storage, dan kemudian membaca file dari tempat lain untuk membaca konten. Lihat contoh -contoh berikut, baca dan tulis di halaman yang berbeda masing -masing. Yang perlu Anda perhatikan di sini adalah bahwa membaca file dan menulis biasanya tidak sinkron, dan Anda harus memastikan bahwa konten telah ditulis sebelum Anda dapat membacanya.
// Tulis file file1 dan file2 di index.ui.js, Anda dapat langsung menulis objek json var key1 = "value1"; storage.writeFile ("data: // file1", key1, fungsi (data, e) {// callback hanya berakhir di sini untuk menulis konten. Jika Anda membaca file sebelum dieksekusi di sini, itu tidak dapat membaca data {"VAR (" VAR). "v2", "k3": "v3", "k4": "v4"}; Storage.writeFile ("data: // file2", key2, function (data, e) {// Callback hanya berakhir di sini untuk menulis konten. Jika Anda membaca file sebelum dieksekusi di sini, mungkin tidak dapat membaca data} // dapatkan nilai di dodec. DataCache = sm ("do_datacache"); var content = {}; content.key1 = DataCache.LoadData ("key1"); content.key2_3 = dataCache.loadData ("KEY2") ["K3"]; label.text = "DataCache /index.Ui.js, Anda dapat secara langsung mengembalikan yang langsung ke the the the secara langsung 2); // formatKomponen do_sqlite mengakses data basis data
Komponen ini adalah komponen MM, yang berarti bahwa banyak instance dapat dibuat. Semua komponen mm adalah ruang lingkup halaman secara default, atau ruang lingkup aplikasi. Buat ruang lingkup penandaan parameter ketiga dari komponen MM.
Perlu dicatat di sini bahwa membaca dan menulis SQLite biasanya tidak sinkron, Anda harus memastikan bahwa konten telah ditulis sebelum Anda dapat membacanya.
1. Lingkup aplikasi:
// Buat objek SQLITE SCOPE APP. Parameter kedua adalah label objek ini. Parameter ketiga menandai ruang lingkupnya adalah appvar sqlite_app = mm ("do_sqlite", "sqlite_app_id1", "app") function test_sqlite () {// Gunakan objek ini untuk membuat test database. Jalankan pernyataan SQL sqlite_app.executeTync (stu_table); // Buat tabel SQL pernyataan stu_table = "Buat tabel stu_table (_id integer); // Buat tabel SQL pernyataan stu_table =" Buat tabel stu_table (_id integer); AutoINCREMEN KUNCI PRIMER, TEKS SNAME, TEKS KECCIPS) "; // Secara sinkron menjalankan pernyataan SQL SQLite_App.ExecuteTync (Stu_table); var stu_sql =" INSERT INTO Stu_Table (SNAME, Snumber) Nilai ('Xiaoming', '01005'); "+"+ "+"+ "Snumber) ('Xiaoming', '01005');"+ "+"+ "+"+ " nilai ('xiaoliu', '01007') "; // Jalankan pernyataan SQL secara tidak sinkron sqlite_app.execute (stu_sql, fungsi (data, e) {// Callback hanya di sini yang dapat dibaca ke dalam data. Jika Anda menanyakan data sebelum mengeksekusi, mungkin tidak dapat dibaca ke data. Jika Anda menanyakan data sebelum menjalankannya, mungkin tidak dapat dibaca ke data. Jika Anda menanyakan data sebelum mengeksekusi, mungkin tidak dapat dibaca ke data. Jika Anda menanyakan data sebelum mengeksekusi, mungkin tidak dapat membaca data. Jika Anda menanyakan data sebelum mengeksekusi, mungkin tidak dapat membaca data. Jika Anda menanyakan data sebelum mengeksekusi, mungkin tidak dapat membaca data. Objek App-Scope SQLite berdasarkan ID "SQLite_App_ID1" dan parameter kedua adalah label objek ini. Database, tidak perlu membukanya lagi // Buat kueri Pernyataan SQL var Stu_Query = "Select * dari Stu_table"; // Jalankan pernyataan kueri secara serentak var result = sqlite_app.querysync (stu_query); label.text = "Gunakan objek ini di sqlite/index.ui. test.db/n "+ json.stringify (hasil [1], null, 2);2. Lingkup halaman:
// Buat objek sqlite scoped halaman, satu-satunya label ID adalah memory_db_id1var sqlite_app = mm ("do_sqlite", "memory_db_id1", "halaman"); // Gunakan objek ini untuk membuat basis data memori di test1.ui.js. Nama ini harus ditulis sebagai: memori: sqlite_app.open (": memori:"); // buat tabel pernyataan sql var stu_table = "tabel drop jika ada stu_table;" // kecepatan eksekusi basis data memori, "stu_cable (stu_cable) (stu_table) (stuable) (stuable) (stuable) (stu_table) (stuable) (stuable) (stuable) (stuable) (stuable) (stU -TLACKEBLE) (stU -TLACKEBLE) (STU_TABLE SQL SQLITE_APP.EXECECET; Stu_table (_ID integer kunci utama autoINCREMENT, TEKS SNAME, TEXT SNUMBUM) "; // Secara sinkron menjalankan pernyataan SQL SQLite_App.executeSync (Stu_table); var stu_sql =" masukkan ke dalam stu_table (sname, values snumber) ('laoming', ',', '1); values ('laohong', '2'); "+" Insert Into Stu_table (Sname, Cuplikan) ('Laoliu', '3') "; // Secara sinkron menjalankan pernyataan SQL SQLITE_APP.EXECUTETYNC (Stu_SQL); // query Tabel database yang dibuat di test1.ui.js di test2.ui.js // dapatkan objek sqlite yang dibuat var sqlite_app = mm ("do_sqlite", "memori_db_id1", "halaman"); // Buat kueri Pernyataan SQL var Stu_Query = "Select * from Stu_table"; // Jalankan pernyataan kueri var hasil = sqlite_app.querysync (Stu_Query); label.text = "query, non-2fy (non-2fy. (non-jon.Pengiriman data
Pengiriman data melibatkan silang, seperti menyampaikan data dalam file UI yang berbeda dan menyampaikan data di berbagai halaman.
Metode yang paling penting dan paling umum digunakan adalah mekanisme pesan
1. Mekanisme Pesan
Kami akan memperkenalkan tautan ini secara rinci dalam dokumen.
Singkatnya, mekanisme pesan dapat melewati data di seluruh lingkup UI atau di seluruh lingkup halaman.
2. OpenPage dan Closepage Pass Data.
Transfer data ini adalah ruang lingkup lintas halaman, tetapi terbatas pada halaman dua lapis. Misalnya, jika Anda membuka Page2 di Page1, Page1 meneruskan beberapa data ke Page2; Page2 ditutup dengan sendirinya, memaparkan Page1, dan meneruskan data kembali ke Page1. Transfer data dapat berupa objek JSON apa pun.
Ini adalah cara biasa dan sangat baik, dan disarankan untuk menggunakannya seperti ini.
// di index.ui.js, lulus data var d = {"k1": "v1", "k2": "v2", "k3": "v3", "k4": "v4"}; app.openpage ({sumber: "sumber: //view/open_close_page/index.ui", ",", ",", ",", "Sumber: //view/open. Terima data yang dilewati ketika halaman open_close_page/index.ui ditutup. page.on ("result", function (data) {if (data) nf.alert (json.stringify (data, null, 2));}) // data yang ditularkan dari index.ui.js dapat memperoleh nilai melalui getData, dan secara langsung mengembalikan objek json var data = page.getData (); label.text = "DATA DATA DATA. JSON Object/n "+ json.stringify (data, null, 2); // Fungsi format close_me () {// tutup sendiri dan lewati data kembali ke lapisan berikutnya pageApp.closepage (" Saya melewati data ketika open_close_page/index.ui ditutup ");}Saya akan memperkenalkan banyak tentang pengetahuan yang relevan tentang berbagi data JS dan transmisi data yang diperkenalkan oleh artikel ini kepada Anda. Saya harap ini akan membantu Anda!