#javascript #odoo
#javascript #odoo
Вопрос:
У меня есть всплывающее окно в существующем модуле. В этом всплывающем окне есть поля. Это не виджеты, которые я могу переопределить.
<field name="lot_name" groups="stock.group_production_lot" attrs="{'invisible': ['|',('lot_id', '!=', False),('lot_name', '=', False)]}"/>
Я унаследовал этот существующий модуль в новом модуле
from odoo import models, fields, api
import logging
_logger = logging.getLogger(__name__)
class SerialGenerator(models.Model):
_inherit = 'stock.move.line'
@api.onchange('lot_name')
_logger.debug("###################### LOT NAME ######################")
pass
onchange
Корректно срабатывает на стороне python.
Проблема в том, что мне нужно иметь контроль javascript над этим полем, но поскольку это существующее поле существующего модуля, которое я не хочу изменять, мне нужно иметь возможность доступа к полю через javascript в моем новом модуле, находящемся в
mymodulestaticsrcjsmymodule.js
Возможно ли то, что я пытаюсь сделать, или есть простой способ, которого мне не хватает?
Комментарии:
1. Вы можете наследовать Javascript для представления формы или древовидного представления.
2. Спасибо @qvpham, я сделал именно это, и это сработало.
Ответ №1:
Я получил эту работу, унаследовав javascript от ListRenderer
odoo.define('mymodule.module', function (require, instance) {
var ListRenderer = require('web.ListRenderer');
ListRenderer.include({
events: _.extend({}, ListRenderer.prototype.events, {
'click .classofinterest': '_newMethod',
}),
_newMethod: function () {
// do stuff in javascript
}
});
});