Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
2 ตอบกลับ
5052 มุมมอง

This is my Owl component in Odoo 15. It is meant to load chart lib from CDN.

/** @odoo-module **/

import { loadAssets } from "@web/core/assets"; //not working.
import { loadJS } from "@web/core/assets"; //not working.
import { registry } from "@web/core/registry"
import { useService } from "@web/core/utils/hooks";

const { Component } = owl;
const { onWillStart, useRef, onMounted } = owl.hooks;

export class ChartRenderer extends Component {
setup(){
this.chartRef = useRef("chart")
onWillStart(async ()=>{
await loadJS("https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.0/chart.umd.min.js")
//await loadAssets("/web/static/lib/Chart/Chart.js")
})
onMounted(()=>this.renderChart())
}
renderChart(){
//body
}
}

ChartRenderer.template = "my_module.ChartRenderer"

Upon loading the module, both loadJS() and loadAssets() within onWillStart function are throwing errors.

loadJS() error: 

"UncaughtPromiseError > ReferenceError

Uncaught Promise > loadJS is not defined.....


===========================
loadAssets() error: 

UncaughtPromiseError > TypeError

Uncaught Promise > Cannot use 'in' operator to search for 'bundles' in /web/static/lib/Chart/Chart.js.......


What am I not doing correctly? What is the correct way to load JS library within an Owl component?

Thanks.


อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Hi,

You can directly provide the link of the js library in your manifest in the asset keyeg:'assets':
        {'web.assets_backend': [
                                'https://cdn.jsdelivr.net/npm/chart.js',]},


Hope it helps

อวตาร
ละทิ้ง
ผู้เขียน คำตอบที่ดีที่สุด

Amazing! It works. Thanks @Cybrosys. 

อวตาร
ละทิ้ง
Related Posts ตอบกลับ มุมมอง กิจกรรม
1
ก.พ. 24
2491
Template does not exist แก้ไขแล้ว
4
พ.ค. 25
12082
How to extend class with Owl JS in V15? แก้ไขแล้ว
1
ม.ค. 24
7990
0
ก.ค. 23
122
1
ธ.ค. 22
4268