odoo widget 渲染

odoo 的 widget 渲染时,template 应该是必须的。

odoo.define('mycounter.js', function (require) {

    "use strict";

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

var Counter = Widget.extend({

    template: 'mycounter',

    events: {

        'click button': '_onClick',

    },

    init: function (parent, value) {

        this._super.apply(this, arguments);

        this.count = value;

    },

    _onClick: function () {

        this.count++;

        console.log(this.count)

        this.$('.val').text(this.count);

    },

});

return Counter;

qweb:


<?xml version="1.0" encoding="UTF-8"?>

<templates id="template" xml:space="preserve">

    <t t-name="mycounter">

        <span class="val"><t t-esc="widget.count"/></span>

        <button>Increment</button>

    </t>

</templates>


widget 写好后需要地方调用,fieldwidget  必须向 fieldRegistry 里  add,一般的 widget 需要被 new 和 添加到 dom,有 appendTo prependTo 等方法:


this.counter = new mycounter(self, 4);

this.counter.appendTo(self.$el);





问题:1,怎么通过 $ 定位元素;2,页面有生成,但是事件没触发。


问题2: 

<div>

        <span class="o_app"><t t-esc="widget.count"/></span>

        <button>Increment</button>

    </div>

必须被容器包着,作用范围在容器内

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。