首页 > 解决方案 > 如何触发小部件内的事件?

问题描述

我为此创建了一个小部件和模板,并列出了该小部件内的事件,但在单击相关按钮后未触发事件。

注意:init 和 start 函数正在工作

这是模板的 xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<div t-name="new_template">
    <br/><br/>
    <div class="counter">
    <center>
        <br/>
        <button class="btn-info btn-lg " id="inc" >+</button>
        <button class="btn-info btn-lg value">0</button>
        <button class="btn-info btn-lg " id="dec">-</button>
    </center>
</div>
</div>
</templates>

这是Js文件

odoo.define('registration_form.A', function (require) {
 "use strict";
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var Widget=require('web.Widget');
var count=0;

var actionname = AbstractAction.extend({
template: 'new_template',
start:function(){
    console.log("start is called");
    this._super.apply(this,arguments);
    var myWidget=new MeterWidget();
    myWidget.appendTo(this.$el.find(".counter"));
    console.log(this.$el.find(".counter"));
    },
});
var MeterWidget=Widget.extend(
{
    'init':function(){
        console.log("init is called");
    },
    events:{'click #inc':'increase','click 
#dec':'decrease'},

    increase:function(e)
    {
        console.log("increment function is called");
        count++;
        this.$el.find(".value").val(count)
    },
    decrease:function(e){
        console.log("decrement function is called");
        count--;
        this.$el.find(".value").val(count)
    }
});
core.action_registry.add('my_action_tag', actionname);
});

标签: pythonodoo

解决方案


试试这些改变,

var MeterWidget=Widget.include({

    'init':function(){
       this._super.apply(this, arguments);
       console.log("init is called");
     },

推荐阅读