Odoo 10如何替换继承的qweb模板内容

时间:2017-10-31 06:29:10

标签: openerp odoo-10

我尝试将标记插入现有模板但无法使其生效。

odoo / addons / mail / static / src / xml / thread.xml

中的现有模板
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">

    <t t-name="mail.ChatThread">
        <t t-if="messages.length">
           :
    <t t-name="mail.ChatComposer.Attachments">
        <div class="o_attachments">
            <t t-foreach="attachments" t-as='attachment'>
                <t t-call="mail.Attachment">
                    <t t-set="editable" t-value="true"/>
                </t>
            </t>
        </div>
    </t>

    <t t-name="mail.Attachment">
        <div t-attf-class="o_attachment #{attachment.upload ? 'o_attachment_uploading' : ''}" t-att-title="attachment.name">

            <a class="o_image" t-att-href='attachment.url' target="_blank" t-att-data-mimetype="attachment.mimetype" t-attf-data-src="/web/image/#{attachment.id}/100x80">
                <span class='o_attachment_name'><t t-esc='attachment.name'/></span>
            </a>
            <t t-if="editable">
                <div class="o_attachment_delete">
                    <i class='fa fa-times-circle' title="Delete this attachment" t-att-data-id="attachment.id"/>
                </div>
                <div class="o_attachment_progress_bar">
                    Uploading
                </div>
            </t>
        </div>
    </t>

我的自定义模板(odoo / addons / mycustom / static / src / xml / thread.xml):
我想在原始模板中的类o_image之后插入Hello世界。

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
    <t t-name="mycustom.ImageAttachment" t-extend="mail.Attachment">
        <t t-jquery="o_image" t-operation="append">
            <div>Hello world</div>
        </t>
    </t>
</templates>

我的javascript渲染模板(odoo / addons / mycustom / static / src / js / thread.js):

odoo.define('mycustom.thread', function (require) {
"use strict";

var core = require('web.core');
var ajax = require('web.ajax');
var qweb = core.qweb;

ajax.loadXML('/mycustom/static/src/xml/thread.xml', qweb);
console.log("INFO", "Hello World")

});

我的资产档案(odoo / addons / mycustom / views / assets.xml):

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <template id="assets_backend" name="my assets" inherit_id="web.assets_backend">
      <xpath expr="." position="inside">
          <script type="text/javascript" src="/mycustom/static/src/js/thread.js"></script>
      </xpath>
    </template>
</odoo>

我的清单文件(odoo / addons / mycustom / 清单 .py):

# -*- coding: utf-8 -*-
{
    'name': "test",
    'summary': """my test""",    
    'description': """
        This is my test module.
    """,
    'author': "peter",
    'website': "",
    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
    # for the full list
    'category': 'Test',
    'version': '0.1',
    # any module necessary for this one to work correctly
    'depends': ['base','mail'],    
    # always loaded
    'data': [
        'views/assets.xml',
    ],
    'qweb': [
        'static/src/xml/thread.xml',
    ],        
}

加载了javascript,因为我可以在浏览器控制台上看到文本Hello World。 但是,我在聊天帖子中看不到<div>Hello World</div>。我错过了什么?

1 个答案:

答案 0 :(得分:0)

试试这个:

<t t-name="mail.Attachment" t-extend="mail.Attachment">
    <t t-jquery="o_image" t-operation="inner">
        <div>Hello world</div>
    </t>
</t>

希望它会对你有所帮助。