Обмен данными и доставка данных дополняют друг друга, давайте вместе обсудим эту проблему. Первое, что можно сказать, это то, что общее обмен и прохождение оба. Область - это область, где она работает. Данные могут быть переданы в одном и том же объеме. Если вы превышаете эту область, он является перекрестной оценкой, и необходимо использовать передачу данных.
Объем
1. UI Scope
Каждый файл пользовательского интерфейса имеет соответствующий UI.JS по умолчанию. Они служат закрытым применением. UI.JS получает объекты пользовательского интерфейса на основе идентификатора компонента в файле пользовательского интерфейса; Различные файлы пользовательского интерфейса могут определять компоненты с одним и тем же идентификатором. Переменные, определенные в UI.JS, можно получить только в этом JS.
2. Страница
Каждый раз, когда вы звоните OpenPage, будет открыта новая страница, и эта новая страница будет рассмотрена на старой странице. Когда закрывается закрытие, покрываемая старая страница будет выставлена. В дополнение к основному файлу пользовательского интерфейса, каждая страница также может содержать много других файлов пользовательского интерфейса, которые находятся в одной и той же сфере страниц.
Когда страница будет закрыта, будут выпущены все объекты, встроенные на странице.
3. App Scope
Это самая большая сфера. Пока приложение не выходит, эта область всегда будет действительной.
app.js принадлежит к приложению, потому что оно не принадлежит ни к какой странице.
Короче говоря, область приложения содержит несколько страниц, а область страницы содержит несколько областей пользовательского интерфейса.
Обмен памятью
По сравнению с файлами и базами данных операции памяти намного быстрее и подходят для относительно небольших операций данных. Недостатком является то, что приложение выпускается после того, как оно закрыто. DeviceOne разделяет память следующими способами.
1. Операция памяти DO_GLOBAL (сфера приложения)
Это обмен данными в приложении. Эта часть памяти на самом деле является парой ключей, и ключ соответствует значению, поэтому будьте осторожны, что если ключ будет переназначен, предыдущее значение будет перезаписано. Метод использования очень прост. Обратитесь к следующим примерам, прочитайте и пишите на разных страницах соответственно.
// Установите значение в index.ui.js, которое может быть установлено на любой объект JSON, за исключением объекта функции. Global.SetMemory ("key1", 1); Global.SetMemory ("key2", "value1"); Global.SetMemory ("key3", ["a", "b", "c"]); Global.setMemory ("key4", {"k1": "v1", "k2": "v2", "k3": "k1"); var label = ui ("do_label_2"); // Получить значение в memory/index.ui.js, вы можете напрямую вернуть объект json var global = sm ("do_global"); var content = {}; content.key1 = global.getmemory ("key1"); content.key2 = global.getmemory ("key2"); Global.getMemory ("key3") [1]; content.key4_k3 = global.getmemory ("key4") ["k3"]; label.text = json.stringify (content, null, 2); // формат2. Javascript Global переменные (область страницы)
Используйте собственные характеристики JavaScript для определения глобальных переменных. Обычно вы можете определить глобальные переменные для реализации обмена данными в разных файлах пользовательского интерфейса на одной и той же странице. Ссылаясь на следующий пример, прочитать и записать в разных файлах пользовательского интерфейса, но находятся в области страницы. Это также очень просто в использовании, есть два способа:
Хотя это очень удобно, не рекомендуется использовать его, потому что он слишком случайный. Если это совместная разработка или сложный проект, трудно найти и отлаживать, если есть ошибка.
// Установить глобальные переменные JS в Test1.ui.js, два способа. // 1. Не добавляйте определение переменной переменной префикса var, key1 = "value1"; // 2. Определите глобальные переменные на DeviceOne Object DeviceOne.key2 = {"k1": "v1", "k2": "v2", "k3": "v3", "k4": "v4"} // Получить глобальные переменные. var content = {}; content.key1 = key1; content.key2_k3 = deviceOne.key2 ["k3"];3. javascript переменные (область пользовательского интерфейса)
Это не нужно объяснять слишком много, но является нормальным определением переменной JS, которое может быть действительным только в текущей области UI.JS.
var key1 = "value1";
4. Режим памяти SQLite
SQLite обычно является режимом файла. Существует особая ситуация, когда SQLite можно использовать непосредственно в памяти. Это подходит для использования сложных структур данных и проблемных текстовых операций. Использование операторов SQL будет намного более гибким.
Там может быть только один режим памяти, и имя зафиксировано как /: memory /:.
В следующем описании базы данных SQLITE мы подробно расскажем.
Обмен файлами
Это легко понять всем. Обмен файлами находится в сфере приложения и также может быть доступен после перезапуска приложения. Вы можете записать контент в файл в любом месте приложения через компонент do_storage, а затем прочитать файл из другого места для чтения контента. Обратитесь к следующим примерам, прочитайте и пишите на разных страницах соответственно. Вам нужно отметить, что чтение и написание файлов обычно асинхронно, и вы должны убедиться, что контент был написан, прежде чем вы сможете прочитать его.
// Написать файлы файла1 и файл2 в index.ui.js вы можете напрямую написать объекты json var key1 = "value1"; storage.writefile ("data: // file1", key1, function (data, e) {// только вызов заканчивается здесь, чтобы написать контент. : "v2", "k3": "v3", "k4": "v4"}; storage.writefile ("data: // file2", key2, function (data, e) {// только обратный вызов заканчивается здесь, чтобы написать содержимое. Если вы читаете файл перед выполнением здесь, он не может читать DATA}) // Получите значение в DATACACH/index.U. dataCache = sm ("do_datacache"); var content = {}; content.key1 = datacache.loaddata ("key1"); content.key2_3 = datacache.loaddata ("key2") ["k3"]; label.text = "datacache /index.ui.js, вы можете вернуть json object /n". 2); // форматДоступ к компонентам DO_SQLite Данные базы данных
Этот компонент является компонентом MM, что означает, что могут быть созданы несколько экземпляров. Все компоненты MM по умолчанию имеют сферу приложения. Создайте третий параметр маркировки компонента MM.
Здесь следует отметить, что чтение и написание SQLite обычно асинхронно, вы должны убедиться, что контент был написан, прежде чем вы сможете его прочитать.
1. Приложение приложения:
// Создать объект SQLite App-Scope. Второй параметр - это метка этого объекта. Третий параметр отмечает, что применение - Appvar SQLite_App = MM ("DO_SQLITE", "SQLITE_APP_ID1", "APP") FUNCTION TEST_SQLITE () {// Использовать этот объект для создания базы данных test.dbslete_app.open ("data: //test.db"); Выполнить оператор SQL SQLITE_APP.Executesync (stu_table); // Создать таблицу SQL оператор STU_TABLE = "CREATE TABLE STU_TABLE (_ID Integer); // Создать таблицу SQL оператор STU_TABLE =" CREATE TABLE_TABLE (_ID Integer); 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) values ('xiooliu', '01007') "; // выполнить оператор SQL Asynchronaly SQLite_App.execute (stu_sql, функция (данные, e) {// обратный вызов только здесь, что он действительно вставлен в данные. App-Scope объект SQLite на основе идентификатора "sqlite_app_id1", а второй параметр-это метка этого объекта. база данных, не нужно больше открывать его // Создать оператор SQL SQL var stu_query = "select * from stu_table"; // выполнить оператор запроса синхронно var result = sqlite_app.querysync (stu_query); label.text = "Используйте этот объект в sqlite/index.U. test.db/n "+ json.stringify (результат [1], null, 2);2. Область страницы:
// Создание объекта SQLite, с пейзажем, единственной меткой идентификатора-memory_db_id1var sqlite_app = mm ("do_sqlite", "memory_db_id1", "page"); // Использование этого объекта для создания базы данных памяти в test1.ui.js. Это имя должно быть записано как: память: sqlite_app.open (": memory:"); // Создать таблицу SQL оператора var stu_table = "Drop Table, если существует stu_table;" // Скорость выполнения базы данных памяти быстро, вы можете попробовать использовать Synchronization // execute a Sql SQLITE_APP.ExecUteSync (STU_TABLE); stu_table (_id Integer Первичный ключ Авторитет, Sname Text, Snumber Text) "; // Синхронно выполнять оператор SQL SQLITE_APP.EXECUTESYNC (stu_table); var stu_sql =" Вставка в stu_table (sname, snumber) значения ('laking', '1'); values ('laohong', '2'); "+" вставьте в stu_table (sname, snumber) values ('laoliu', '3') "; // синхронно выполнить оператор sql sqlite_app.executeync (stu_sql); // Запросить таблицу базы данных, созданную в test1.ui.js в test2.ui.js // Получить созданный объект sqlite var sqlite_app = mm ("do_sqlite", "memory_db_id1", "page"); // Создать оператор SQL SQL var stu_query = "select * from stu_table"; // Выполнить оператор запроса var result = sqlite_app.querysync (stu_query); label.text = "Запрос третьей записи таблицы базы данных в Memory, созданном in test1.ui.js in test2.Доставка данных
Доставка данных включает в себя Cross-Scope, такие как передача данных в разных файлах пользовательского интерфейса и передача данных на разных страницах.
Наиболее важным и наиболее часто используемым методом является механизм сообщения
1. Механизм сообщения
Мы подробно рассмотрим эту ссылку в документе.
Короче говоря, механизм сообщений может передавать данные по областям пользовательского интерфейса или по областям страниц.
2. Данные OpenPage и ClosePage Pass.
Эта передача данных является межстраничной областью, но ограничена двухслойными страницами. Например, если вы открываете Page2 на Page1, Page1 передает некоторые данные на Page2; Page2 закрывается, разоблачает Page1 и передает данные обратно на Page1. Передача данных может быть любым объектом JSON.
Это обычный и очень хороший способ, и рекомендуется использовать его так.
// В index.ui.js, передавать данные var d = {"k1": "v1", "k2": "v2", "k3": "v3", "k4": "v4"}; app.openpage ({source: "source: //view/open_close_page/index.ui", Data: d, DeSture: //view/open_close_page/index.ui ", data: d," //view/open_close_page/index.ui ", Data:" //view/open_close_page/index.UI ". «Прозрачный»});} // Принять данные, переданные обратно, когда страница open_close_page/index.ui закрыта. page.on ("result", function (data) {if (data) nf.alert (json.stringify (data, null, 2);}) // Данные, передаваемые из index.ui.js, могут получить значение через getData, и могут напрямую возвращать json -объектный data = page.getData (); Верните объект json/n "+ json.stringify (data, null, 2); // format function close_me () {// Закрыть себя и передавать данные обратно следующему слою pageapp.closepage (« Я передал данные, когда open_close_page/index.ui закрыт »);};Я так много расскажу о соответствующих знаниях о обмене данными JS и передачу данных, которые в этой статье представляет вам. Я надеюсь, что это будет полезно для вас!