콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
2 답글
4677 화면

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. 

아바타
취소
관련 게시물 답글 화면 활동
1
2월 24
2262
4
5월 25
11553
1
1월 24
7834
0
7월 23
122
1
12월 22
4036