Код Javascript не работает в odoo.define, но работает в консоли разработчика

Как показано на рисунке ниже,
Я хочу изменить цвет фона при изменении значения радио.

Код Javascript не работает в odoo.define, но работает в консоли разработчика

это для 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 или нет, поместив консоль в файл, чтобы проверить, есть ли файл или нет.

Keval Mehta 13.06.2019 07:46

Я уверен, что настроенный код JS используется odoo. Когда я просто помещаю console.info('hi'), он будет отображаться на консоли.

Terrence Poe 13.06.2019 08:02

хорошо, тогда проверьте, вызывается ли ваша расширенная функция или нет.

Keval Mehta 13.06.2019 10:55

@TerrencePoe Если вы не возражаете, я спрошу, на каком языке написан текст на первом изображении и что он говорит?

LogicalBranch 13.06.2019 11:05

Это китайский. Это форма для записи информации о взвешивании автомобиля. и радио-это классификация, которая относится к покупке или отгрузке.

Terrence Poe 13.06.2019 11:11

@ Кеваль Мехта Вы имеете в виду, могу ли я пройти курс hpw Я продлил или нет?

Terrence Poe 13.06.2019 11:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
689
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение.
- нажмите радио, чтобы изменить bgcolor

  • реализовать изменение bgcolor при загрузке DOM в записи другого типа.

мой код

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"));

});

Другие вопросы по теме