includ un cod JavaScript doar pentru un anumit tip de vizualizare

voturi
1

Vreau să adăugați un cod JavaScript numai atunci când utilizatorul a crea o înregistrare sau să actualizați o înregistrare pentru res.partnermodelul.

deja am tryied pentru a include un fișier JavaScript folosind această tehnică (și voi explica ceea ce face de mai jos):

<odoo>
    <data>
        <template id=my_module_script name=my module script inherit_id=web.assets_backend>
            <xpath expr=. position=inside>
                <script type=text/javascript src=/my_module/static/src/js/script.js></script>
            </xpath>
        </template>
    </data>
</odoo>

Aceasta funcționează mare, fișierul meu JavaScript este inclus acum ... dar în orice puncte de vedere (și nu numai pentru partenerul meu specific crea vizualizare / actualizare).

ÎNTREBARE

Există vreun mod în care pot spune odoo pentru a încărca un anumit javascript (sau un fișier css, de asemenea) pentru un anumit tip de vedere (aș dori ca acest exemplu fișierul JavaScript încărcat pentru base.view_partner_formvizualizare)?

Întrebat 12/01/2018 la 11:41
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Ohh ... Asta sună sărac. Să nu vă faceți griji, vom încerca să o rezolve. :)

1) Trebuie doar să creați un constructor în js modelului dumneavoastră. Ca și în acest fel:

new instance.web.Model("res.partner").call()

Aici, în metoda de apelare, puteți apela orice metodă Python sau apelați punctul dumneavoastră de vedere, de asemenea.

2) De asemenea, puteți face acest lucru prin trecerea URL-ul la fișierul js. Un fel de URL-ul de acțiune. Asa

action_url = _.str.sprintf('/web?db=%s#id=%s&view_type=form&model=res.parnter', db, meeting_id);

3) O altă modalitate este de a trece de acțiune. URL-ul Whrn este redirecționat către faptul că, atunci această acțiune este obtinerea chemat de la js.

on_follower_clicked: function  (event) {
        event.preventDefault();
        var partner_id = $(event.target).data('partner');
        var state = {
            'model': 'res.partner',
            'id': partner_id,
            'title': this.record_name
        };
        session.webclient.action_manager.do_push_state(state);
        var action = {
            type:'ir.actions.act_window',
            view_type: 'form',
            view_mode: 'form',
            res_model: 'res.partner',
            views: [[false, 'form']],
            res_id: partner_id,
        }
        this.do_action(action);
    },

4) Puteți obține , de asemenea , modelul curent de this.modelAceasta va reveni , de asemenea , modelul actual de a new instance.web.Model(self.dataset.model) obține modelul de date CCD curent.

Poti sa raportati codul de bază pentru acest lucru prea. Există o mulțime de exemple sunt pentru toate aceste metode.

Publicat 16/01/2018 la 09:01
sursa de către utilizator

voturi
0

Dacă includeți fișierul JavaScript, acesta va fi compilate pentru web.assets_backend.jsfiecare dată când este instalat modulul.

Și web.assets_backend.jseste încărcat pe fiecare dată când pagina backend este încărcată, nu atunci când este încărcată o imagine.

Odoo este proiectat pentru a fi un SPA . Fișierele JavaScript sunt încărcate pe prima încărcare a paginii.

Deci, eu nu cred că acest lucru ar trebui să se facă prin acest mod (adauga js personalizate la o adresă de vedere), ci prin modul în care Odoo lui: Trigger codul de acțiuni specifice.

Publicat 12/04/2018 la 03:02
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more