this.getCtMobile().startPage("/static/html/info.html?pageId=info&a=1&b=2")
Способ передачи данных через память
Для передачи параметров используется вызов метода setRequest класса Page. На целевой странице вызывается метод getRequest класса Page для получения параметров. Преимущество способа передачи через память заключается в том, что можно передавать данные любого типа между страницами. Недостаток — при обновлении страницы предыдущие данные не сохраняются, в отличие от строкового способа, который позволяет сохранить значение параметра навсегда.
A.js
<!-- Передача параметров на B.html -->
this.setRequest('requestCode', {a: 1, b: 2});
this.ctmobile.startPage("/static/html/b.html?pageId=b");
B.js
pageAfterShow() {
<!-- Получение переданных параметров с A.html -->
const parameter = JSON.stringify(this.getRequest());
console.log('parameter', parameter);
}
Следует отметить, что метод getRequest необходимо вызывать в обратном вызове pageAfterShow. После вызова функции pageAfterShow можно получить параметры, вызвав метод getRequest в любом месте.
7. Страница с возвращаемым значением
В базовую структуру страницы добавляются атрибуты ct-page-mode="result" или ct-page-mode="singleInstanceResult".
Например, есть две страницы index.html и PopUpDialog.html. В index.html есть кнопка, которая открывает PopUpDialog.
Определение index.html:
<div ct-data-role="page" id="index">
<a ct-pageId="PopUpDialog">Открыть PopUpDialog</a>
<div class="resultText">Результат PopUpDialog<div>
</div>
Определение index.js:
import CtMobile from 'ctmobile';
import $ from 'jquery';
export default class extends CtMobile.Page {
constructor(ctmobile, id) {
super(ctmobile, id);
}
/**
* override
*/
pageCreate() {
}
/**
* Обработка результата PopUpDialog
* override
*/
pageResult(e, resultCode, bundle) {
console.log("resultCode", resultCode, "bundle", JSON.stringify(bundle));
alert(`resultCode:${resultCode}\r\nbundle:${JSON.stringify(bundle)}`);
}
}
Определение PopUpDialog.html:
<div ct-data-role="page" id="PopUpDialog" ct-data-mode="result">
<button class="result">Вернуться</button>
</div>
Или:
<div ct-data-role="page" id="PopUpDialog" ct-data-mode="singleInstanceResult">
<button class="result">Вернуться</button>
</div>
Определение PopUpDialog.js:
import CtMobile from 'ctmobile';
import $ from 'jquery';
export default class extends CtMobile.Page {
constructor(ctmobile,id){
super(ctmobile,id);
}
/**
* override
*/
pageCreate() {
const $btnEL = this.getPageJO().find(' .result');
$btnEl.on('click' , () => {
this.setResult('PopUpDialog', {a: 1, b: 2});
this.over();
});
}
}
В index.html необходимо переопределить метод pageResult в index.js. Этот метод вызывается после возврата из PopUpDialog или ручного вызова finish. Метод pageResult имеет три параметра: e, resultCode и bundle. Параметр resultCode используется для различения источников, а bundle содержит возвращаемое значение.
PopUpDialog.html должен вызывать метод this.setResult (resultCode, bundle), чтобы установить возвращаемое значение, и вызывать this.finish(), чтобы закрыть страницу.
Сценарии использования страниц с возвращаемыми значениями включают:
При использовании сценария «много к одному» можно использовать метод setRequest для передачи флага родительской страницы.
При сценарии «один ко многим» можно различать разные источники с помощью параметра requestCode метода pageResult.
8. Режимы запуска страницы
Режим запуска устанавливается в базовой структуре страницы с помощью атрибута ct-data-mode. Всего существует пять режимов запуска:
9. Жизненный цикл страницы
У страницы есть 10 функций жизненного цикла.
10. Эффект перехода между страницами
Эффект перехода между страницами устанавливается в базовой структуре с помощью атрибута ct-data-transition. Всего существует 13 видов эффектов перехода между страницами:
slideleft: переход справа налево (overlay).
slideright: переход слева направо (overlay).
slideup: переход снизу вверх (overlay).
slidedown: переход сверху вниз (overlay).
wxslideleft: переход, похожий на переход в WeChat, справа налево.
wxslideright: переход, похожий на переход в WeChat, слева направо.
wxslideup: переход, похожий на переход в WeChat, снизу вверх.
wxslidedown: переход, похожий на переход в WeChat, сверху вниз.
pushslideleft: переход, подобный переходу в WeChat, справа налево (push). 11. Трансляция (broadcast)
pushslideright — сдвиг вправо (push);
pushslideup — сдвиг вверх (push);
pushslidedown — сдвиг вниз (push);
material — стиль Android Material.
11.1. Трансляция (borasdcast)
На основе концепции трансляции Borasdcast в Android предоставляется ряд функций для передачи данных между страницами. Трансляция может быть упорядоченной и неупорядоченной, её можно реализовать двумя способами: через конфигурацию и API.
<div ct-page-role="page"
id="index"
ct-data-intentfilter-action="actionCode"
ct-data-intentfilter-categorys="c1,c2"
ct-data-intentfilter-priority="0"
></div>
import CtMobile from 'ctmobile';
export default class extends CtMobile.Page {
constructor(ctmobile, id) {
super(ctmobile, id);
}
/**
* @override
*/
pageReceiver(intent) {
console.log(intent);
}
}
import CtMobile from 'ctmobile';
export default class extends CtMobile.Page {
constructor(ctmobile,id){
super(ctmobile,id);
}
onRegisterReceiver(intent) {
console.log(JSON.stringify(intent));
}
/**
* @override
*/
pageCreate() {
this.onRegisterReceiver = this.onRegisterReceiver.bind(this);
// 注册 borasdcast
this.ctmobile.registerReceiver({
action: 'actionCode',
priority: 0,
categorys: ['c1','c2']
}, this.onRegisterReceiver);
}
}
this.ctmobile.sendBroadcast({
action: 'actionCode',
categorys: ['c1', 'c2'],
bundle: {
a: 1,
b: 2
}
});
this.ctmobile.sendOrderedBroadcast({
action: 'actionCode',
categorys: ['c1', 'c2'],
bundle: {
a: 1,
b: 2
}
});
<div ct-page-role="page"
id="index"
ct-data-intentfilter-priority="0"
></div>
// 注册 borasdcast
this.ctmobile.registerReceiver({
action: 'actionCode',
priority: 0,
categorys: ['c1', 'c2']
}, this.onRegisterReceiver);
12. Другие функции
<a ct-pageId="a" ct-reload="true">a.html</a>
this.ctmobile.startPage('/static/html/a.html?pageId=a',{
reload:true
});
Например, если index.html переходит в a.html, то в истории браузера будет только a.html.
A-теги не обрабатываются фреймворком: иногда мы не хотим, чтобы фреймворк обрабатывал поведение a-тегов. В этом случае вы можете добавить ct-data-ajax="false" к тегу a.
Предварительная загрузка содержимого ajax:
<div ct-data-role="page" id="index">
<a ct-pageId="a" ct-data-preload="true">into a.html</a>
<a ct-pageId="b" ct-data-preload="true">into b.html</a>
<a ct-pageId="c" ct-data-preload="true">into c.html</a>
<a ct-pageId="d" ct-data-preload="true">into d.html</a>
<a ct-pageId="e" ct-data-preload="true">into e.html</a>
</div>
Фреймворк загрузит содержимое a-e.html во время инициализации. Если в a-e.html есть страницы, требующие предварительной загрузки, фреймворк также предварительно загрузит их. Каждая страница будет загружена только один раз, и после завершения загрузки она больше не будет загружаться.
<div ct-data-role="page" id="about">
<header>
<a class="ct-back-icon" ct-data-rel="back"></a>
</header>
</div>
Свойство (property) | Значение (значение) | Описание (описание) |
---|---|---|
ct-data-role | page | Элемент с этим свойством представляет собой страницу |
ct-data-rel | boolean | true позволяет выполнять операцию возврата при нажатии на элемент с этим свойством |
ct-pageId | string | Используется в теге для представления идентификатора страницы для загрузки |
ct-parameter | string | Используется в теге для представления передаваемого параметра |
ct-data-transition | ||
---------------------- | ------------------------------------------------------------- | |
slideright | Слева направо (overlay) | |
slideup | Сверху вниз (overlay) | |
slidedown | Снизу вверх (overlay) | |
wxslideleft | Аналогично движению в WeChat справа налево | |
wxslideright | Аналогично движению в WeChat слева направо | |
wxslideup | Аналогично движению в WeChat снизу вверх | |
wxslidedown | Аналогично движению в WeChat сверху вниз | |
pushslideleft | Справа налево (push) | |
pushslideright | Слева направо (push) | |
pushslideup | Сверху вниз (push) | |
pushslidedown | Снизу вверх (push) | |
material(по умолчанию) | Стиль Android Material | |
ct-data-mode | standard(по умолчанию) | Множественный экземпляр |
single | Одиночный экземпляр (уничтожается при нажатии кнопки «Назад») | |
singleInstance | Полностью одиночный экземпляр (не уничтожается) | |
result | С возвращаемым значением (может возвращать значение родительской странице) | |
singleInstanceResult | Полностью одиночный экземпляр с возвращаемым значением (не уничтожается, может возвращать значение родительской странице) | |
ct-data-ajax | boolean | Будет ли фреймворк обрабатывать переходы по тегам a |
ct-data-preload | boolean | Следует ли заранее загружать страницу, на которую указывает атрибут href тега a |
ct-reload | boolean | Изменит ли количество window.history.length |
ct-data-intentfilter-action | string | Идентификатор, если страница хочет подписаться на уведомления |
ct-data-intentfilter-categorys | [string1 string2 …] | Параметры фильтрации при подписке |
ct-data-intentfilter-priority | number 0(по умолчанию) | Приоритет при отправке упорядоченных широковещательных рассылок, значение по умолчанию — 0 |
После выполнения checkou перейдите в каталог demo
$ npm install
$ npm run devDll
$ npm start
Введите localhost:8000 в браузере для доступа к главной странице demo.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )