小部件呈现后,Odoo执行javascript库

问题描述

我有一个odoo小部件,我试图在其中绘制图表(使用外部javascript库)。到目前为止,我已经定义了模板,小部件,加载资产并注册了视图。

这是我的模板

<div t-name="my_template">
    <button class="clickme" type="button">Click Me!</button>
    <div id="chart"></div>
</div

这是我的渲染器定义:

odoo.define('MyRenderer',function (require) {
    "use strict";

    var Widget = require('web.Widget');
    var core = require('web.core');


    var MyRenderer = Widget.extend({
        template: 'my_template',events: {
            'click button.clickme': '_renderChart',},init: function (parent) {
            // insert code to execute before rendering,for object initialization
            this._super(parent);
            console.log('init renderer');
        },start: function () {
            // post-rendering initialization code,at this point
            // if ``start`` is asynchronous,return a promise object so callers
            // kNow when the object is done initializing
            var self = this;
            var defs = [this._super.apply(this,arguments)];
            console.log('start renderer');

            var def = self._renderChart();
            defs.push(def);
            return $.when.apply($,defs);
        },_renderChart: function () {
            var self = this;
            var domain = [];
            var args = [domain];

            return this._rpc({
                model: 'mymodel.test',method: 'areas_per_city',args: args,})
                .then(function (result) {
                    console.log(result);

                    var data = {
                        "resultset": result,"Metadata": [{
                            "colIndex": 0,"colType": "String","colName": "Type"
                        },{
                            "colIndex": 1,"colType": "Numeric","colName": "Quantity"
                        }]
                    };


                    new pvc.PieChart({
                        canvas: 'chart',height: 200,crosstabMode: false,valuesVisible: true,colors: [
                            '#333333','#777777','#FFC20F','#FFE085','#005CA7','#0086F4','#39A74A','#63CA73'
                        ],legend: true,legendPosition: 'right',legendalign: "center",animate: false,selectable: true,hoverable: true
                    })
                        .setData(data)
                        .render();
                });
        },});

    // registering view
    core.action_registry.add('my_custom_view',MyRenderer);


    return {
        MyRenderer: MyRenderer,};
}); 

当我单击菜单操作并使用开发人员工具时,我看到图表已呈现,但是当该操作完成加载时,它将替换模板内容并将其设置为空白。

我将click事件绑定到了按钮,并且效果很好。问题出在小部件的start()方法中。我不知道是否可以使用另一种方法。 预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)