Пользовательский виджет js не распознает шаблон из qweb - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь протестировать пользовательский виджет из js reference , и я получаю сообщение об ошибке в отладчике:

Ошибка: QWeb2: шаблон 'some.template' не найден

qweb.xml был правильно установлен в манифесте, потому что когда я расширяю ListController и использую другой шаблон, он работает правильно.

Вот определение шаблона, которое я использую в qweb.xml:

<?xml version="1.0" encoding="UTF-8"?>
<template>
    <div t-name="some.template">
        <span class="val"><t t-esc="widget.count"/></span>
        <button>Increment</button>
    </div>
</template>

Я пытался изменить <template> -> <templates>, полностью убрал тег «template», но все равно получаю то же сообщение об ошибке.

JS:

odoo.define('working.test', function (require) {
var Widget = require('web.Widget');
var Counter = Widget.extend({
    template: 'some.template',
    events: {
        'click button': '_onClick',
    },
    init: function (parent, value) {
        this._super(parent);
        this.count = value;
    },
    _onClick: function () {
        this.count++;
        this.$('.val').text(this.count);
    },
});

// Create the instance
var counter = new Counter(this, 4);
// Render and insert into DOM
counter.appendTo(".o_nocontent_help");

})

Манифест:

# -*- coding: utf-8 -*-
{
    'name': "testwidget",

    'summary': """
        Short (1 phrase/line) summary of the module's purpose, used as
        subtitle on modules listing or apps.openerp.com""",

    'description': """
        Long description of module's purpose
    """,

    'author': "My Company",
    'website': "http://www.yourcompany.com",

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/12.0/odoo/addons/base/data/ir_module_category_data.xml
    # for the full list
    'category': 'Uncategorized',
    'version': '0.1',

    # any module necessary for this one to work correctly
    'depends': ['base'],
    'qweb': ['static/qweb.xml'],

    # always loaded
    'data': [
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'views/web_asset.xml',
    ],
    # only loaded in demonstration mode
    'demo': [
        'demo/demo.xml',
    ],
}

Есть идеи, как мне нужно изменить этот шаблон для корректной работы виджета и в какой таблице в db odoo хранятся эти шаблоны?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Вы можете попробовать изменить

'qweb': ['static/qweb.xml'],

на

'qweb': ['static/*.xml'],

Это иногда случается со мной, указав статическое имя файла XML, он не отображает этот шаблон. Но просто загружая все XML-файлы с помощью *, шаблоны загружаются.

0 голосов
/ 14 октября 2019

Полагаю, вам может потребоваться убедиться, что определение js ссылается на имя модуля правильно

odoo.define('MODULE TECHNICAL NAME SHOULD BE HERE.test', function (require) {});

вам также следует зарегистрировать функцию js с помощью чего-то вроде:

core.action_registry.add("module_name.name", Widget_Extend);

для получения дополнительной информации https://www.odoo.com/documentation/11.0/reference/javascript_reference.html#registries

...