Перехоплювачі¶
Owl hooks - це спосіб факторизації коду, навіть якщо це залежить від життєвого циклу якогось компонента. Більшість хуків, що надаються Owl, пов’язані з життєвим циклом компонента, але деякі з них (наприклад, useComponent) надають спосіб створення специфічних hooks.
Використовуючи ці hooks, можна створити багато налаштованих hooks, які допомагають вирішити певну проблему або спростити деякі поширені завдання. Решта цієї сторінки містить список hooks, що надаються веб-фреймворком Odoo.
Name |
Короткий опис |
|---|---|
завантажити ресурси |
|
автоматично фокусується на елементі, на який посилається автофокус |
|
підписатися та відписатися від bus |
|
відобразити пейджер панелі керування представлення. |
|
позиціонувати елемент відносно цілі |
|
активувати перевірку орфографії при фокусуванні на введеному тексті або текстовому полі |
useAssets¶
Розташування¶
@web/core/assets
Опис¶
Дивіться розділ про відкладене завантаження ресурсів для отримання додаткової інформації.
useAutofocus¶
Розташування¶
@web/core/utils/hooks
Опис¶
Фокусувати елемент, на який посилається t-ref=»autofocus» у поточному компоненті, щойно він з’явиться в DOM, і якщо він не відображався раніше.
import { useAutofocus } from "@web/core/utils/hooks";
class Comp {
setup() {
this.inputRef = useAutofocus();
}
static template = "Comp";
}
<t t-name="Comp">
<input t-ref="autofocus" type="text"/>
</t>
API¶
- useAutofocus()¶
- Повертає
посилання на елемент.
useBus¶
Розташування¶
@web/core/utils/hooks
Опис¶
Додати та очистити слухач подій до шини. Цей перехоплювач гарантує, що слухач буде належним чином очищено після відмонтування компонента.
import { useBus } from "@web/core/utils/hooks";
class MyComponent {
setup() {
useBus(this.env.bus, "some-event", event => {
console.log(event);
});
}
}
API¶
- useBus(bus, eventName, callback)¶
- Аргументи
bus (
EventBus()) – цільовий bus подіїeventName (
string()) – назва події, яку ми хочемо прослухатиcallback (
function()) – зворотний виклик слухача
usePager¶
Розташування¶
@web/search/pager_hook
Опис¶
Відображає Pager панелі керування представлення. Цей перехоплювач коректно встановлює env.config для надання властивостей пейджеру.
import { usePager } from "@web/search/pager_hook";
class CustomView {
setup() {
const state = owl.hooks.useState({
offset: 0,
limit: 80,
total: 50,
});
usePager(() => {
return {
offset: this.state.offset,
limit: this.state.limit,
total: this.state.total,
onUpdate: (newState) => {
Object.assign(this.state, newState);
},
};
});
}
}
API¶
- usePager(getPagerProps)¶
- Аргументи
getPagerProps (
function()) – функція, яка повертає властивості пейджера.
usePosition¶
Розташування¶
@web/core/position_hook
Опис¶
Допомагає позиціонувати HTMLElement (popper) відносно іншого HTMLElement (reference). Цей гачок гарантує оновлення позиціонування під час зміни розміру/прокручування вікна.
import { usePosition } from "@web/core/position_hook";
class MyPopover extends owl.Component {
setup() {
// Here, the reference is the target props, which is an HTMLElement
usePosition(this.props.target);
}
}
MyPopover.template = owl.tags.xml`
<div t-ref="popper">
I am positioned through a wonderful hook!
</div>
`;
Важливо
Ви повинні вказати свій елемент popper за допомогою директиви t-ref.
API¶
- usePosition(reference[, options])¶
- Аргументи
reference (
HTMLElement or ()=>HTMLElement()) – цільовий HTMLElement, з якого потрібно позиціонуватиoptions (
Options()) – варіанти позиціонування (див. таблицю нижче)
Параметр |
Тип |
Опис |
|---|---|---|
|
string |
це посилання useRef для елемента, який буде позиціоновано. Значення за замовчуванням - |
|
HTMLElement |
контейнер, з якого очікується, що поппер не переповниться. У разі переповнення пробуються інші позиції popper, доки не буде знайдено таку, що не переповнюється. (за замовчуванням: вузол |
|
number |
додано відступ між елементами popper та reference (за замовчуванням: |
|
Direction[-Variant] |
бажана позиція. Це рядок, що складається з одного |
|
(el: HTMLElement, position: PositioningSolution) => void |
зворотний виклик, який буде викликатися щоразу, коли відбувається позиціонування (наприклад, при монтуванні/патчі компонента, прокручуванні документа, зміні розміру вікна…). Може використовуватися, наприклад, для динамічного стилізації відносно поточної позиції. |
Example
import { usePosition } from "@web/core/position_hook";
class DropMenu extends owl.Component {
setup() {
const toggler = owl.useRef("toggler");
usePosition(
() => toggler.el,
{
popper: "menu",
position: "right-start",
onPositioned: (el, { direction, variant }) => {
el.classList.add(`dm-${direction}`); // -> "dm-top" "dm-right" "dm-bottom" "dm-left"
el.style.backgroundColor = variant === "middle" ? "red" : "blue";
},
},
);
}
}
DropMenu.template = owl.tags.xml`
<button t-ref="toggler">Toggle Menu</button>
<div t-ref="menu">
<t t-slot="default">
This is the menu default content.
</t>
</div>
`;
useSpellCheck¶
Розташування¶
@web/core/utils/hooks
Опис¶
Активуйте стан перевірки орфографії для поля вводу або текстової області під час фокусування за допомогою t-ref="spellcheck" у поточному компоненті. Цей стан потім видаляється при розмитті, як і червоний контур, що покращує читабельність вмісту.
Hook також можна використовувати для будь-якого елемента HTML з атрибутом contenteditable. Щоб повністю вимкнути перевірку орфографії для елементів, які можуть бути ввімкнені хуком, явно встановіть атрибут spellcheck як false для елемента.
Example
У наступному прикладі перевірка орфографії буде ввімкнена для першого вхідного поля, текстового поля та div з параметром contenteditable="true".
import { useSpellCheck } from "@web/core/utils/hooks";
class Comp {
setup() {
this.simpleRef = useSpellCheck();
this.customRef = useSpellCheck({ refName: "custom" });
this.nodeRef = useSpellCheck({ refName: "container" });
}
static template = "Comp";
}
<t t-name="Comp">
<input t-ref="spellcheck" type="text"/>
<textarea t-ref="custom"/>
<div t-ref="container">
<input type="text" spellcheck="false"/>
<div contenteditable="true"/>
</div>
</t>
API¶
- useSpellCheck([options])¶
- Аргументи
options (
Options()) – параметри перевірки орфографії (див. таблицю нижче)
Параметр |
Тип |
Опис |
|---|---|---|
|
string |
це useRef reference для елемента, для якого буде ввімкнено перевірку орфографії. |