mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[IMP] misc: export the validate function
The props validation code is actually quite difficult to get right. Also, it is sometimes useful to be able to validate an object against a specified schema. Therefore, this commit exports the standalone validate function as an utility function.
This commit is contained in:
@@ -45,4 +45,5 @@ Utility/helpers:
|
||||
- [`loadFile`](reference/utils.md#loadfile): an helper to load a file from the server
|
||||
- [`markup`](reference/templates.md#outputting-data): utility function to define strings that represent html (should not be escaped)
|
||||
- [`status`](reference/component.md#status-helper): utility function to get the status of a component (new, mounted or destroyed)
|
||||
- [`validate`](reference/utils.md#validate): validates if an object satisfies a specified schema
|
||||
- [`whenReady`](reference/utils.md#whenready): utility function to execute code when DOM is ready
|
||||
|
||||
@@ -243,6 +243,8 @@ class ComponentB extends owl.Component {
|
||||
};
|
||||
```
|
||||
|
||||
Note: the props validation code is done by using the [validate utility function](utils.md#validate).
|
||||
|
||||
## Good Practices
|
||||
|
||||
A `props` object is a collection of values that come from the parent. As such,
|
||||
|
||||
@@ -8,6 +8,7 @@ functions are all available in the `owl.utils` namespace.
|
||||
- [`whenReady`](#whenready): executing code when DOM is ready
|
||||
- [`loadFile`](#loadfile): loading a file (useful for templates)
|
||||
- [`EventBus`](#eventbus): a simple EventBus
|
||||
- [`validate`](#validate): a validation function
|
||||
|
||||
## `whenReady`
|
||||
|
||||
@@ -56,3 +57,24 @@ bus.addEventListener("event", () => console.log("something happened"));
|
||||
|
||||
bus.trigger("event"); // 'something happened' is logged
|
||||
```
|
||||
|
||||
## `validate`
|
||||
|
||||
The `validate` function is a function that validates if a given object satisfies a
|
||||
specified schema. It is actually used by Owl itself to perform
|
||||
[props validation](props.md#props-validation). For example:
|
||||
|
||||
```js
|
||||
validate(
|
||||
{ a: "hey" },
|
||||
{
|
||||
id: Number,
|
||||
url: [Boolean, { type: Array, element: Number }],
|
||||
}
|
||||
);
|
||||
|
||||
// throws an error with the following information:
|
||||
// - unknown key 'a',
|
||||
// - 'id' is missing (should be a number),
|
||||
// - 'url' is missing (should be a boolean or list of numbers),
|
||||
```
|
||||
|
||||
@@ -52,5 +52,6 @@ export {
|
||||
onWillDestroy,
|
||||
onError,
|
||||
} from "./component/lifecycle_hooks";
|
||||
export { validate } from "./validation";
|
||||
|
||||
export const __info__ = {};
|
||||
|
||||
Reference in New Issue
Block a user