Odoo中有一个文件:addons/mail/static/src/js/chatter.js 。它包含一个我想更改的方法:message_get_suggested_recipients .
为此,我创建了一个带有文件的插件:
chatter.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!--template id="assets_backend" name="addon1" inherit_id="web.assets_backend"-->
<xpath expr="." position="inside">
<script type="text/javascript" src="/addon1/static/src/js/chatter.js"></script>
</xpath>
</template>
</data>
</odoo>
和
chatter.js
odoo.define('addon1.chatter', function(require){
'use strict';
var OdooChatter = require('mail.Chatter');
OdooChatter.include({
message_get_suggested_recipients: function () {
var self = this;
var email_addresses = _.pluck(this.suggested_partners, 'email_address');
return this.thread_dataset
.call('message_get_suggested_recipients', [[this.context.default_res_id], this.context])
.done(function (suggested_recipients) {
var thread_recipients = suggested_recipients[self.context.default_res_id];
_.each(thread_recipients, function (recipient) {
var parsed_email = utils.parse_email(recipient[1]);
if (_.indexOf(email_addresses, parsed_email[1]) === -1) {
self.suggested_partners.push({
checked: recipient[3] || true,
partner_id: recipient[0],
full_name: recipient[1],
name: parsed_email[0],
email_address: parsed_email[1],
reason: recipient[2],
});
}
});
});
}
});
});
我可以看到 Odoo 网站打开时加载了 javascript,但是断点没有捕捉到正确的位置,这意味着加载的 javascript 无效。
由于未调用我提供的方法(而是调用原始方法),如何更改方法?
最佳答案
将 chatter.xml 文件修改为:
<template id="your_module.assets_backend" inherit_id="web.assets_backend" name="Your custome name">
<xpath expr="//script[@src='/mail/static/src/js/chatter.js']" position="after">
<script type="text/javascript" src="/addon1/static/src/js/chatter.js"></script>
</xpath>
</template>
这对于我在 Odoo 11 上的情况有效。对于您的情况 (Odoo 10),它也应该有效。
<小时/>重新查看 Odoo 的源代码后,因为您想覆盖 message_get_suggested_recipients
,它是 mail.composer.BasicComposer
的支柱(而不是mail.Chatter
)我认为你的include
应该是:
var composer = require('mail.composer');
var ChatterComposer = composer.BasicComposer.include(
// This goes your work of message_get_suggested_recipients rewrite.
);
关于javascript - Odoo 更改基本 JavaScript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49875355/