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