Код: Выделить всё
my_module/static/src/views/dashboard_page_layout.xml< /code> < /p>
мои файлы JS находятся в:
my_module/static/src/js/< /code> < /p>
📦 файлы < /h3>
[h4]HelloBox.js
Код: Выделить всё
/** @odoo-module **/
import { Component, xml } from '@odoo/owl';
export class HelloBox extends Component {}
HelloBox.template = xml`
Click me
`;
HelloBox.props = {
title: { type: String },
};
HelloBox.prototype.sayHello = function () {
alert('Hello from OWL!');
};
< /code>
[h4]HelloBox.xml
Код: Выделить всё
Click me
< /code>
[h4]init_owl.js
Код: Выделить всё
/** @odoo-module **/
import { mount, whenReady } from '@odoo/owl';
import { HelloBox } from './HelloBox';
whenReady(() => {
const root = document.getElementById('hello-box-root');
console.log('Mounting HelloBox in:', root);
if (root) {
mount(HelloBox, {
target: root,
props: { title: 'Witaj z OWL!' },
});
}
});
Код: Выделить всё
< /code>
🧩 Проблема фокусировка < /h3>
✅ Успешно нагрузки JS < /strong>, console.log < /code> подтверждает, что цель крепления существует, и код компонента является правильным. Правильно, несмотря на то, что он включен в активы. < /p>
В некоторых случаях я даже получаю: < /p>
TypeError: Cannot read properties of undefined (reading 'defaultProps')
< /code>
, который обычно указывает на то, что Сова пытается установить неполный или неопределенный компонент-возможно, из-за того, что шаблон XML не был должным образом скомпилирован или инъецирован. PrettyPrint-Override ">'assets': {
'web.assets_frontend': [
'my_module/static/src/js/HelloBox.xml',
'my_module/static/src/js/HelloBox.js',
'my_module/static/src/js/init_owl.js',
],
},
< /code>
Я также попытался добавить xml в web.assets_qweb < /code>, web.assets_backend < /code> и изменение порядка загрузки, но проблема остается. < /p>
🙏. OWL/ODOO 18 При работе с Web.Sassets_frontend
Подробнее здесь: https://stackoverflow.com/questions/796 ... late-issue