Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS与.include一起工作,但与.extend一起失败_Javascript_Odoo_Odoo 13 - Fatal编程技术网

Javascript JS与.include一起工作,但与.extend一起失败

Javascript JS与.include一起工作,但与.extend一起失败,javascript,odoo,odoo-13,Javascript,Odoo,Odoo 13,我制作这个JS是为了在表单(后端)上添加一个功能,在触发事件单击时计算一个字段。到目前为止,当我使用“.include”时,代码会重新计算,但所有视图中的整个JS都会失败,因为我使用了“.include”。当我尝试使用扩展时,我的代码什么也不做。看起来Odoo没有向JS引擎添加扩展代码,所以我的问题是,我在这里做错了什么?我是否还需要添加一些其他内容,以便我的代码可以扩展 odoo.define('med_care.TestRenderer', function (require) { "use

我制作这个JS是为了在表单(后端)上添加一个功能,在触发事件单击时计算一个字段。到目前为止,当我使用“.include”时,代码会重新计算,但所有视图中的整个JS都会失败,因为我使用了“.include”。当我尝试使用扩展时,我的代码什么也不做。看起来Odoo没有向JS引擎添加扩展代码,所以我的问题是,我在这里做错了什么?我是否还需要添加一些其他内容,以便我的代码可以扩展

odoo.define('med_care.TestRenderer', function (require) {
"use strict";

var viewRegistry = require('web.view_registry');
var FormRenderer = require('web.FormRenderer');
var FormView = require('web.FormView');

var TestFormRenderer = FormRenderer.extend({
    events: _.extend({}, FormRenderer.prototype.events, {
        'click .sign_selector': '_onSignSelectorClicked',
    }),
    init: function (parent, state, params) {
        this._super.apply(this, arguments);
        this.fields = state.fields;
        this._onSignSelectorClicked = _.debounce(this._onSignSelectorClicked, 300, true);
    },
    confirmChange: function (state, id, fields, e) {
        var self = this;
        if (state.model == 'med.test') {
            return this._super.apply(this, arguments).then(function () {
                self.canBeSaved(self.state.id);
            });
        }
    },
    _onSignSelectorClicked: function (event) {
       this.state.data.telephone = '333';
       if (this.state.model == 'med.test') {
           var info_test = {
               dataPointID: this.state.id,
               changes: {telephone: '333'},
               viewType: "form",
               notifyChange: true
           };
           var odoo_event = this.trigger_up('field_changed', info_test);
           this.confirmChange(this.state, this.state.id, "telephone",          
           odoo_event)
        }
    },
});
var TestFormView = FormView.extend({
    config: _.extend({}, FormView.prototype.config, {
        Renderer: TestFormRenderer,
    }),
});
viewRegistry.add('test_form', TestFormView);
return TestFormView;
});

扩展创建一个继承给定类功能的新类,您为表单添加了一个新的视图类型,我认为您需要使用标记
而不是
来创建表单视图,如果您想在该视图上工作,还可以检查是否加载了witch模型以应用此行为。您可以在stackoverflow answers中找到许多关于如何检查当前模型的示例。我希望我是对的^^^嘿!我已经发现了。自从找到另一个解决方案后,我还没有测试过你的解决方案。扩展表单渲染器所需要做的就是返回TestFormRenderer并为FormView创建扩展。在(XML)中,我只添加了注册表中添加的扩展表单视图(FormView)的名称。扩展创建一个继承给定类功能的新类,您添加了表单的新视图类型,我认为您需要使用标记
而不是
来创建表单视图,如果您想在该视图上工作,但您也可以检查witch模型是否已加载以应用此行为。您可以在stackoverflow answers中找到许多关于如何检查当前模型的示例。我希望我是对的^^^嘿!我已经发现了。自从找到另一个解决方案后,我还没有测试过你的解决方案。扩展表单渲染器所需要做的就是返回TestFormRenderer并为FormView创建扩展。在(XML)中,我只添加了在注册表中添加的扩展表单视图(FormView)的名称。