El intercambio de datos y la entrega de datos se complementan entre sí, discutamos este tema juntos. Lo primero que debe decir es que compartir y pasar están alcanzados. El alcance es el área donde funciona. Los datos se pueden compartir en el mismo alcance. Si excede este alcance, es un alcance cruzado y la transmisión de datos debe usarse.
Alcance
1.Ui alcance
Cada archivo UI tiene un UI.JS correspondiente de forma predeterminada. Sirven como un alcance cerrado. UI.JS obtiene objetos UI basados en la ID del componente en el archivo UI; Diferentes archivos de interfaz de usuario pueden definir componentes con la misma ID. Las variables definidas en UI.JS solo se pueden acceder en este JS.
2. Alcance de la página
Cada vez que llame a OpenPage, se abrirá una nueva página y esta nueva página se cubrirá en la página anterior. Cuando ClosePage se cierra, la página antigua cubierta estará expuesta. Además del archivo de interfaz de usuario principal, cada página también puede contener muchos otros archivos de IU, que están en el mismo alcance de la página.
Cuando la página esté cerrada, se lanzarán todos los objetos construidos en la página.
3.App en el alcance
Este es el alcance más grande. Mientras la aplicación no salga, este alcance siempre será válido.
App.js pertenece al alcance de la aplicación porque no pertenece a ninguna página.
En resumen, el alcance de la aplicación contiene múltiples alcances de página, y el alcance de la página contiene múltiples alcances de interfaz de usuario.
Intercambio de memoria
En comparación con los archivos y bases de datos, las operaciones de memoria son mucho más rápidas y son adecuadas para operaciones de datos relativamente pequeñas. La desventaja es que la aplicación se lanza después de que se cierre. DeviceOne comparte la memoria de las siguientes maneras.
1. Operación de memoria de Do_Global (alcance de la aplicación)
Este es el intercambio de datos en el alcance de la aplicación. Esta memoria es en realidad un par de valores clave, y una clave corresponde a un valor, así que tenga cuidado de que si se reasigna una clave, el valor anterior se sobrescribirá. El método de usar es muy simple. Consulte los siguientes ejemplos, lea y escriba en diferentes páginas respectivamente.
// Establezca el valor en index.ui.js, que se puede establecer en cualquier objeto JSON, con excepciones de objeto de función. global.SetMemory ("Key1", 1); Global.SetMemory ("Key2", "Value1"); Global.SetMemory ("Key3", ["A", "B", "C"]); Global.SetMemory ("Key4", {"K1": "V1", "K2": "V2", "K3": "V3", "K4": "V4"). var etiqueta = ui ("do_label_2"); // Obtenga el valor en memoria/index.ui.js, puede devolver directamente el objeto json var global = sm ("do_global"); var content = {}; content.key1 = global.getMemory ("key1"); content.key2 = global.getMemory ("key2"); content.key3_2 = global.getMemory ("key3") [1]; content.key4_k3 = global.getMemory ("key4") ["k3"]; etiqueta.text = json.stringify (content, null, 2); // format2. JavaScript Variables globales (alcance de la página)
Use las propias características de JavaScript para definir variables globales. Por lo general, puede definir variables globales para realizar el intercambio de datos en diferentes archivos de interfaz de usuario en la misma página. Refiriéndose al siguiente ejemplo, lea y escriba en diferentes archivos de interfaz de usuario, pero se encuentran en un alcance de página. También es muy simple de usar, hay dos formas de:
Aunque es muy conveniente, no se recomienda usarlo porque es demasiado informal. Si se trata de un desarrollo colaborativo o un proyecto complejo, es difícil localizar y depurar si hay un error.
// Establezca las variables globales de JS en test1.ui.js, de dos maneras. // 1. No agregue la definición de variable de prefijo VAR, key1 = "value1"; // 2. Defina las variables globales en el objeto de dispositivos de dispositivos dispositivos. var content = {}; content.key1 = key1; content.key2_k3 = dispositivoeNe.key2 ["k3"];3. Variables JavaScript (alcance de la interfaz de usuario)
Esto no necesita explicarse demasiado, pero es la definición de variable JS normal, que solo puede ser válida en el alcance actual de UI.JS.
var key1 = "value1";
4. Modo de memoria de SQLite
SQLite suele ser un modo de archivo. Hay una situación especial en la que SQLite se puede usar directamente en la memoria. Es adecuado para una forma de usar estructuras de datos complejas y operaciones de texto problemáticas. El uso de declaraciones SQL será mucho más flexible.
Solo puede haber un modo de memoria, y el nombre se soluciona como /: memoria /:.
En la siguiente descripción de la base de datos SQLite, la presentaremos en detalle.
Intercambio de archivos
Esto es fácil de entender por todos. El intercambio de archivos está en el alcance de la aplicación y también se puede acceder después de reiniciar la aplicación. Puede escribir contenido en un archivo en cualquier lugar de la aplicación a través del componente do_storage, y luego leer un archivo de otro lugar para leer el contenido. Consulte los siguientes ejemplos, lea y escriba en diferentes páginas respectivamente. Lo que debe tener en cuenta aquí es que la lectura y la escritura de archivos suelen ser asíncronas, y debe asegurarse de que el contenido se haya escrito antes de poder leerlo.
// Escribir archivos file1 y file2 en index.ui.js, puede escribir directamente los objetos JSON var key1 = "value1"; storage.writeFile ("data: // file1", key1, function (data, e) {// La devolución de llamada solo termina aquí para escribir el contenido. Si lee el archivo antes de ejecutar aquí, no puede leer los datos}) var key2 = {"" K1: ", si lee el archivo antes de ejecutar aquí, es posible "v2", "k3": "v3", "k4": "v4"}; storage.writeFile ("data: // file2", key2, function (data, e) {// El valor de llamada solo termina aquí para escribir el contenido. Si usted es el archivo antes de ejecutar aquí, no puede leer el objeto}) dataCache = sm ("do_datacache"); var content = {}; content.key1 = dataCache.loadData ("key1"); content.key2_3 = dataCache.loadData ("key2") ["k3"]; etiqueta.text = "dataCache/index.ui.js, puede devolver directamente el objeto JSON/n"+ jSon.stringify (content, 2); FormatoEl componente do_sqlite accede a los datos de la base de datos
Este componente es un componente MM, lo que significa que se pueden crear múltiples instancias. Todos los componentes MM son el alcance de la página por defecto, o el alcance de la aplicación. Cree el tercer alcance de marcado de parámetros del componente MM.
Cabe señalar aquí que la lectura y la escritura de Sqlite generalmente son asíncronas, debe asegurarse de que el contenido se haya escrito antes de poder leerlo.
1. Aplicación de la aplicación:
// Crear un objeto SQLite de aplicaciones APP. El segundo parámetro es la etiqueta de este objeto. El tercer parámetro marca el alcance es appvar sqlite_app = mm ("do_sqlite", "sqlite_app_id1", "app") function test_sqlite () {// use este objeto para crear una base de datos test.dbsqlite_app.open ("data: //test.db"); var stu_table = "Tabla de datos" Ejecutar una instrucción SQL sqlite_app.executesync (stu_table); // create table sql instrucción stu_table = "Crear tabla stu_table (_id integer); // crea tabla sql instrucción stu_table =" Crear tabla stu_table (_id intreger); primary key autoincrement,sname text,snumber text)";// Synchronously execute a SQL statement sqlite_app.executeSync(stu_table);var stu_sql = "insert into stu_table(sname,snumber) values('xiaoming','01005');"+ "insert into stu_table(sname,snumber) valores ('xiaoliu', '01007') "; // ejecutar una instrucción SQL asynCRrónamente sqlite_app.execute (stu_sql, function (data, e) {// La devolución de llamada solo está aquí que realmente se inserta en los datos. Si consulta los datos antes de ejecutarlo, no puede leer el dispositivo de datos. APP-SCOPE SQLITE Object basado en la ID "SQLITE_APP_ID1" y el segundo parámetro es la etiqueta de este objeto. Base de datos, ya no es necesario abrirlo // Crear instrucción SQL de consulta var stu_query = "select * de stu_table"; // ejecutar una instrucción de consulta sincronizada test.db/n "+ json.stringify (resultado [1], nulo, 2);2. Alcance de la página:
// Crear un objeto sqlite con escopación de página, la única etiqueta de ID es Memory_DB_ID1VAR SQLITE_APP = MM ("do_sqlite", "Memory_DB_ID1", "Página"); // Use este objeto para crear una base de datos de memoria en test1.ui.js. Este nombre debe escribirse como: memoria: sqlite_app.open (": memoria:"); // Crear tabla SQL Declaración var stu_table = "Tabla de caída Si existe stu_table;" // La velocidad de ejecución de la base de datos de memoria es rápida, puede intentar usar sincronización // ejecución de una declaración sql sqlite_app.executesync (stu_table); stu_table; stu_table (_id Integer Primary Key AutoIncrement, Sname Text, Snumber Text) "; // Ejecutar sincronamente una instrucción SQL sqlite_app.executesync (stu_table); var stu_sql =" Inserte en stu_table (sname, snumber) valores ('laoming', '1'); "+" Insertar en stu_table, sname, sname, sname, sname) valores ('laohong', '2'); "+" inserte en stu_table (sname, snumber) valores ('laoliu', '3') "; // ejecutar sincrónicamente una instrucción sql sqlite_app.executesync (stu_sql); // consulta la tabla de base de datos creada en test1.ui.js en test2.ui.js // Obtener el objeto sqlite creado var sqlite_app = mm ("do_sqlite", "memoria_db_id1", "página"); // Crear instrucción SQL SQL var stu_query = "select * de stu_table"; // ejecutar una instrucción de consulta var resultado = sqlite_app.querysync (stu_query); etiqueta.text = "consulta el tercer registro de la tabla de bases de datos en la memoria creada en test1.ui.js en test2.ui.js/n"+ json.stringife (2, 2, 2, 2, 2, 2).Entrega de datos
La entrega de datos implica un alcance cruzado, como pasar datos en diferentes archivos de IU y pasar datos en diferentes páginas.
El método más importante y más utilizado es el mecanismo de mensajes
1. Mecanismo de mensajes
Presentaremos este enlace en detalle en el documento.
En resumen, el mecanismo de mensajes puede pasar datos a través de los ámbitos de la interfaz de usuario o en los ámbitos de la página.
2. OpenPage y ClosePage Pass Data.
Esta transferencia de datos es un alcance de página cruzada, pero se limita a páginas de dos capas. Por ejemplo, si abre la página2 en la página1, la página1 pasa algunos datos a la página2; La página2 se cierra, expone la página1 y vuelve a publicar datos a la página 1. La transferencia de datos puede ser cualquier objeto JSON.
Esta es una forma regular y muy buena, y se recomienda usarlo así.
// en index.ui.js, pase los datos var d = {"k1": "v1", "k2": "v2", "k3": "v3", "k4": "v4"}; app.openpage ({fuente: "fuente: //view/open_close_page/index.ui", data: d, d, statusbarstate: "transparent") Acepte los datos transmitidos cuando la página Open_Close_Page/Index.ui está cerrada. Page.on ("resultado", function (data) {if (data) nf.alert (json.stringify (data, null, 2));}) // Los datos aprobados desde index.ui.js pueden obtener el valor a través de getData, y puede devolver directamente el objeto json var data = page.getData (); etiqueta objeto/n "+ json.stringify (datos, nulo, 2); // Función de formato Close_Me () {// Cerrar y pasar los datos a la siguiente capa de Pagepp.ClosePage (" Pasé los datos cuando abre_close_page/index.ui está cerrado ");}Presentaré mucho sobre el conocimiento relevante sobre el intercambio de datos JS y la transmisión de datos que le presenta este artículo. ¡Espero que te sea útil!