覆盖 listView 的 _render 函数在 odoo 中不起作用
override the _render function of listView does't work in odoo
这是我的代码。我想根据 rpc 调用的结果更改某些字段的背景颜色。但是只有当我在edit
和save
之间切换模式时才会发生变化。当我打开这条记录时应该会发生变化。
有什么想法吗?
var render = listRender.extend({
init: function () {
this._super.apply(this, arguments)
},
async _render() {
const result = this._super.apply(this, arguments);
var fields = [];
for (let index in this.arch.children) {
if (this.arch.children[index].tag === "field") {
fields.push({"field_name": this.arch.children[index].attrs.name, "index": index});
}
}
var self = this;
this.arch.children[36]["attrs"]["class"] = "red_color";
var infos = await this._rpc({
model: "purchase.order",
method: "is_updated",
args: [{"fields": fields, "id": this.state.res_ids}]
});
infos.data.forEach(ele => {
this.arch.children[parseInt(ele["index"])]["attrs"]["class"] = "red_color";
})
},
});
渲染覆盖不是处理您的问题的正确方法。考虑更改相应的视图:改为“sale.order.form”。
您可以这样找到它:在应用程序设置中,通过在 url 中添加“?debug=1”切换到调试模式,重新加载页面,然后转到新的技术 Menu-tab > 查看。
然后搜索:sale.order.form
...对应于 src/odoo/addons 中的以下 xml 文件:sale/sale_views.xml 或 sale_purchase/sale_views.xml and/or website_sale/sale_order_views.xml
相应的url也必须相似(但id=...不同):
https://yourodoodomain.com/web#id=949&action=28&model=ir.ui.view&view_type=form&cids=1&menu_id=4
这是我的代码。我想根据 rpc 调用的结果更改某些字段的背景颜色。但是只有当我在edit
和save
之间切换模式时才会发生变化。当我打开这条记录时应该会发生变化。
有什么想法吗?
var render = listRender.extend({
init: function () {
this._super.apply(this, arguments)
},
async _render() {
const result = this._super.apply(this, arguments);
var fields = [];
for (let index in this.arch.children) {
if (this.arch.children[index].tag === "field") {
fields.push({"field_name": this.arch.children[index].attrs.name, "index": index});
}
}
var self = this;
this.arch.children[36]["attrs"]["class"] = "red_color";
var infos = await this._rpc({
model: "purchase.order",
method: "is_updated",
args: [{"fields": fields, "id": this.state.res_ids}]
});
infos.data.forEach(ele => {
this.arch.children[parseInt(ele["index"])]["attrs"]["class"] = "red_color";
})
},
});
渲染覆盖不是处理您的问题的正确方法。考虑更改相应的视图:改为“sale.order.form”。 您可以这样找到它:在应用程序设置中,通过在 url 中添加“?debug=1”切换到调试模式,重新加载页面,然后转到新的技术 Menu-tab > 查看。
然后搜索:sale.order.form
...对应于 src/odoo/addons 中的以下 xml 文件:sale/sale_views.xml 或 sale_purchase/sale_views.xml and/or website_sale/sale_order_views.xml
相应的url也必须相似(但id=...不同):
https://yourodoodomain.com/web#id=949&action=28&model=ir.ui.view&view_type=form&cids=1&menu_id=4