Как показано на рисунке ниже,
Я хочу изменить цвет фона при изменении значения радио.
это для ODOO11. Я установил файл js для наследования шаблона. но это не работает.
<template id = "assets_backend_weight" name = "static_resources_demo assets" inherit_id = "web.assets_backend">
<xpath expr = "." position = "inside">
<script type = "text/javascript" src = "/yc_root/static/src/js/my_js.js"></script>
</xpath>
</template>
my_js.js
odoo.define('yc_root.my_JS', function (require) {"use strict";
var Class = require('web.Class');
var hpw = Class.extend({
init: function(){
var v = $("div[name='in_out'] div input:checked").attr('data-value');
if (v =='O') {
$('.o_form_sheet').css("background-color","blue");
}
else {
$('.o_form_sheet').css("background-color","yellow");
}
}
})
return hpw;
});
Я помещаю код из переменной v в конец условия if-else в консоль разработчика. Он может изменить цвет, но не работает через настраиваемый файл JS. Как я могу изменить его?
И я уверен, что odoo использует мой настроенный JS-файл.
Хотя я просто добавил console.info('hi')
в свой настроенный JS-файл, он может появиться на консоли.
Кажется, что odoo загружает web.assets_backend.js перед созданием DOM. Поскольку я проверяю оповещение («привет»), всплывающее окно перед загрузкой DOM (экран полностью пустой).
Я уверен, что настроенный код JS используется odoo. Когда я просто помещаю console.info('hi'), он будет отображаться на консоли.
хорошо, тогда проверьте, вызывается ли ваша расширенная функция или нет.
@TerrencePoe Если вы не возражаете, я спрошу, на каком языке написан текст на первом изображении и что он говорит?
Это китайский. Это форма для записи информации о взвешивании автомобиля. и радио-это классификация, которая относится к покупке или отгрузке.
@ Кеваль Мехта Вы имеете в виду, могу ли я пройти курс hpw
Я продлил или нет?
Я нашел решение.
- нажмите радио, чтобы изменить bgcolor
мой код
odoo.define('yc_root.my_JS', function (require) {"use strict";
var core = require('web.core');
var Widget = require('web.Widget');
var bgdrawer = Widget.extend({
/* <init: construct before loading DOM completely.>*/
init: function() {
var self = this;
self._super.apply(this, arguments);
//self.bgChanger();
/* this is used to register a listener on an event.
form: .on(ev, node.callback, node.context);
ev:
'resize': implement when browser resize
'DOM_updated': implement when DOM updated
...etc. */
core.bus.on('click', "div[name='in_out'] div input:checked", self.bgChanger);
core.bus.on('DOM_updated', "span[name='in_out']", self.post_bgChanger);
core.bus.on('click', "button .o_pager_next", self.post_bgChanger);
},
bgChanger: function() {
var v = $("div[name='in_out'] div input:checked").attr('data-value');
if (v =='O') { $('.o_form_sheet').css("background-color","#adff2f");}
else if (v =='I') { $('.o_form_sheet').css("background-color","#ffc0cb");}
},
post_bgChanger: function() {
if ($("span[name='in_out']")[0]){
var _str = $("span[name='in_out']")[0].innerHTML;
if (_str= = "出貨") { $('.o_form_sheet').css("background-color","#adff2f");}
else if (_str= = "進貨") { $('.o_form_sheet').css("background-color","#ffc0cb");}
}
},
});
// Init a new bgdrawer when the web client is ready
/*core.bus.on('web_client_ready', null, function () {new bgdrawer();});
return {'bgdrawer': bgdrawer,};*/
var my_widget = new bgdrawer(this);
my_widget.appendTo($(".o_form_sheet"));
});
Прежде всего, проверьте, захвачен ли ваш настроенный файл кода JS odoo или нет, поместив консоль в файл, чтобы проверить, есть ли файл или нет.