如何在odoo10中创建一个简单的小部件

时间:2017-07-12 06:28:46

标签: javascript openerp

如何在odoo10中创建一个简单的小部件?相应的代码 在odoo10中关注?我可以将此代码转换为odoo10吗?

Segmentation Fault: 11

1 个答案:

答案 0 :(得分:3)

在Odoo-10中创建小部件和模板

<强>窗口小部件:

  • Widget是不同的或替代表示,用于在odoo中显示屏幕,字段和属性。
  • Widget允许使用不同的渲染模板更改视图,并允许根据需要进行设计。

示例:

<强> widget_name.js

odoo.define(module.model_name', function(require) {
    "use strict";
    var Widget = require('web.Widget');
    var core = require('web.core');
    var Model = require('web.Model');

    var QWeb = core.qweb;
    var _t = core._t;

    // here we are getting the value in an array.
    var widget_name = Widget.extend({
    //render your template
        "template" : "template_name",


    //initialize
    init : function () {
    var self = this;
           this._super(parent);
        //initialize values to variables
    }


//Binding Events
        events : {
            'click .class_ex' : 'method1',
            'click .class_ex1' : 'method2',
        },

        start : function() {

            var self = this;
            this._super(parent);

//your functionality code and logic
        },



//creating functions
            method1:function(){
                //do something when click event fire on class_ex
            },
            method2:function(){
                //do something when click event fire on class_ex
            },
            });
            return widget_name;
});

您需要添加此.js&amp; odoo中的.css文件就像这样。

<强> assets_backend.xml

<odoo>
    <data>
        <template id="assets_backend" inherit_id="web.assets_backend">
            <xpath expr="script[last()]" position="after">
           <script type="text/javascript" src="/module/static/src/js/widget_name.js">
</script>
           <link href="/module/static/src/css/home.css" rel="stylesheet"></link>
            </xpath>
        </template>
    </data>
</odoo>

设计小工具模板:

  • 创建XML并添加xml:space =&#34;保留&#34;作为模板标签中的参数。
  • t-name是在.js文件中定义的模板的名称,并且在您使用它时,相同的名称将用作XML中的小部件名称。

<强> tmpl.xml

<?xml version="1.0"?>
<templates id="template" xml:space="preserve">
     <t t-name="template_name">
        <div class=”myclass”>
            //design your template here 
        <div class=”class_ex”>
            //body
        </div>
            <div class=”class_ex1”>
                //body
            </div>
        </div>
    </t>
</templates> 

注意:无需在tmpl.xml文件中编写odoo标记。

  • 将模板名称设置为相同非常重要,如.js(widget_name.js)文件中所示。

如何使用小部件

  • 按操作或对象按钮使用小部件。

  • 如下所示,我们将template_name添加到action_registry,现在我们可以使用此名称来执行XML。

示例:

<record id="template_id" model="ir.actions.client">
    <field name="name">template name</field>
    <field name="tag">template_name</field>
    <field name="target">new</field>
</record>  
  • 设置&#34;模板名称&#34;在这里
  • 您还可以在按钮,字段上编写一些事件,然后创建一个处理事件和执行呈现模板功能的函数。当单击对象按钮时,返回此id(template_id)。

您也可以像这样使用您的小部件。

<field name="mobile" widget="template_name" />