javascript - Odoo 10 - 将上下文传递给由 FormView.buttons 模板中的按钮调用的向导

标签 javascript odoo

我在 FormView 中的创建按钮旁边添加了一个新按钮。

<t t-extend="FormView.buttons">
    <t t-jquery="button.o_form_button_create" t-operation="after">
        <t t-if="widget.fields_view.name == 'site.form'">
            <button type="button"
                    class="btn btn-primary btn-sm oe_create_customer_button_form">
                Create Customer Site
            </button>
        </t>
    </t>
</t>

我将一个操作链接到它以打开一个向导表单。

现在,我会在向导调用时传递表单中显示的记录中的值,但我遇到了一些麻烦。 它仅包含打开的第一条记录的引用,因此当我从另一条记录调用向导时,它将显示第一条记录的数据。

instance.web.FormView.include({
    render_buttons: function() {
        var self = this
        this._super.apply(this, arguments)

        // GET BUTTON REFERENCE
        if (this.$buttons) {
            var btn = this.$buttons.find('.oe_create_customer_button_form')
        }
        self.do_query(btn)
    },
    do_query: function(btn) {
        var self = this
        var context = {}

        // QUERY THE MODEL   --   DOES NOT WORK PROPERLY
        // TO PASS PARENT
        new instance.web.Model('broadband.site')
            .query()
            .filter([['id', '=', self.dataset.ids[0]]])
            .first()
            .done(function(res) {
                if(res) {
                    context = {
                        'default_parent_id': res.id
                    }
                }
                self.do_new_button(context, btn)
            })
    },
    do_new_button: function (context, btn) {
        var self = this

        var action = ({
            type: 'ir.actions.act_window',
            res_model: 'broadband.wizard',
            view_type: 'form',
            view_mode: 'form',
            views: [[false, 'form']],
            target: 'new',
            context: context
        })

        btn.on('click', function() {
            self.do_action(action)
        })
    }
})

最佳答案

[已解决]

我重写了'load_record' 函数以获取'datarecord' 对象并使用它代替'dataset'

代码如下:

instance.web.FormView.include({
    is_site: function() {
        if (this.dataset.model && this.dataset.model == 'broadband.site') {
            return true
        } else {
            return false
        }
    },
    render_buttons: function() {
        if(this.is_site() && !this.$buttons) {
            this._super.apply(this, arguments)
        }
    },
    load_record: function() {
        var self = this

        if(this.is_site()) {
            self._super.apply(this, arguments)
            var btn = self.$buttons.find('.oe_create_customer_button_form')
            btn.hide()
            if(self.datarecord.site_type != 'last_mile') {
                btn.show()
            }
            self.do_query(btn)
        } else {
            self._super.apply(this, arguments)
        }
    },
    do_query: function(btn) {
        var self = this
        var context = {}
        var passed = false

        if(this.is_site()) {

            var site_id = self.datarecord.id

            btn.on('click', function() {
                new instance.web.Model('broadband.site')
                    .query()
                    .filter([['id', '=', site_id]])
                    .first()
                    .then(function(res) {
                        if(res && !passed) {
                            context = {
                                'default_parent_id': res.id
                            }
                            self.do_button_action(context)
                            passed = true
                        }
                    })
            })
        }
    },
    do_button_action: function (context) {
        var self = this

        var action = ({
            type: 'ir.actions.act_window',
            res_model: 'broadband.wizard',
            view_type: 'form',
            view_mode: 'form',
            views: [[false, 'form']],
            target: 'new',
            context: context
        })

        self.do_action(action)

    }
})

关于javascript - Odoo 10 - 将上下文传递给由 FormView.buttons 模板中的按钮调用的向导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41305965/

相关文章:

javascript - 在 Bootstrap 模式中重新加载 div 后使用scrollTop 时,不会考虑新高度

javascript - MVC2 IIS - 在部署时正确解析外部样式表和脚本中的 URL?

javascript - 如何使用 Cypress 测试网页已禁用滚动?

python - Odoo Python3 base64 错误 : TypeError: expected bytes-like object, 不是文本

javascript 创建 INcode 工作区(框架)

javascript - 动态创建的 iframe 的 contentWindow 未定义

module - 如何在 Odoo 13 中没有开发者模式的情况下使时间表在员工模块中可见?

python - Odoo Studio 服务器错误计算字段,错误

odoo - 如何修复 ValueError : Expected singleton sale. order(41,...)

xml - Odoo 错误异常 ("Cannot update missing record %r"% xid)