odoo13 tree视图增加按钮

之前写过一遍oooo10版本的增加按钮方法,在odoo13中已经不太适用,现在更新一下在13版本中增加按钮的方法,方法其实都大同小异,直接上代码

  • xml:qweb设置按钮模板



    
        
        
    

这个xml需要在manifest中写入qweb项才会生效

  • js:设置按钮的逻辑方法
odoo.define('add_tree_button.product_tree_button', function (require) {
    "use strict";
    var core = require('web.core');
    var ListController = require('web.ListController');
    var ListView = require('web.ListView');
    var viewRegistry = require('web.view_registry');

    var QWeb = core.qweb;

    var ProductListController = ListController.extend({
        /**
         * 继承tree视图的控制器,增加我们自定义按钮的绑定时间
         * @override
         */
        renderButtons: function () {
            this._super.apply(this, arguments);
            // 渲染qweb模板,展示测试按钮,这里的值为模板名
            this.$buttons.append($(QWeb.render("add_tree_button.product_test_button", this)));
            var self = this;
            // 按类名绑定按钮点击事件
            this.$buttons.on('click', '.o_product_test_button', function () {
                // 1.打开视图
                self.do_action({
                    type: 'ir.actions.act_window',
                    res_model: 'product.template',
                    target: 'new',
                    views: [[false, 'form']],
                    flags: {mode: 'edit'},
                }, {
                    on_reverse_breadcrumb: function () {
                        self.reload();
                    },
                    on_close: function () {
                        self.reload();
                    }
                });

                // 2.执行python代码
                // if (self.getSelectedIds().length == 0) {
                //     return;
                // }
                // return self._rpc({
                //     model: 'product.template',
                //     method: 'test_print',
                //     // 传入选择数据的id
                //     args: [self.getSelectedIds()],
                // });
                
            });
        }
    });

    var ProductListView = ListView.extend({
        /**
         * 继承tree视图,将上面的控制逻辑加入视图中
         * @override
         */
        config: _.extend({}, ListView.prototype.config, {
            Controller: ProductListController,
        }),
    });

    // 注册视图,上面使用派生继承,没有修改原本的tree视图,所以需要注册后使用
    viewRegistry.add('product_tree_button', ProductListView );
});

  • xml: 引入自定义js


    
    

  • xml:在tree视图中指定使用自定义的list_view


    
        product.template.tree.view.inherit
        product.template
        
        
            
                
                product_tree_button
            
        
    

你可能感兴趣的:(odoo13 tree视图增加按钮)