私はOdoo 9.0の販売ダッシュボードでデモデータを無効にします。私は期待どおりに動作するように変更すべきjavascriptの正確な行を特定しました。 これは私が変更する必要があるのは、実際には、このラインであるSALES_TEAM /(...)/ sales_team_dashboard.jsOdoo 9.0のjavascript関数をオーバーライド
render: function() {
var super_render = this._super;
var self = this;
return this.fetch_data().then(function(result){
self.show_demo = result && result['nb_opportunities'] == 0;
var sales_dashboard = QWeb.render('sales_team.SalesDashboard',{
widget: self,
show_demo: self.show_demo,
values: result,
});
super_render.call(self);
$(sales_dashboard).prependTo(self.$el);
});
},
から元のコードです:
self.show_demo = false;
を次のように
self.show_demo = result && result['nb_opportunities'] == 0;
私はコードをテストし、それが動作します。しかし、オリジナルのOdooモジュールをそのままにしておきたいので、独自のモジュール内から元のjavascriptを上書きしたいと思います。
odoo.define('my_module.dashboard', function(require) {
"use strict";
console.log('dashboard #1');
var dashboard = require('sales_team.dashboard');
console.log('dashboard #2');
var SalesTeamDashboardView = dashboard.extend({
template: 'sales_team.SalesDashboard',
render: function() {
console.log('dashboard #3');
var super_render = this._super;
var self = this;
return this.fetch_data().then(function(result){
console.log('dashboard #4');
self.show_demo = false;
var sales_dashboard = QWeb.render(template, {
widget: self,
show_demo: self.show_demo,
values: result,
});
super_render.call(self);
console.log('dashboard #5');
$(sales_dashboard).prependTo(self.$el);
});
},
});
console.log('dashboard #6');
//core.view_registry.add('sales_team_dashboard', SalesTeamDashboardView);
return SalesTeamDashboardView;
});
これは、ページをロードした後、コンソールに表示されます。 私はこれを試してみました。
dashboard #1 web.assets_backend.js:4447
dashboard #2 web.assets_backend.js:4447
dashboard #6 web.assets_backend.js:4447
javascriptは実行されていますが、レンダリング機能がオーバーライドされていないようです。それを無効にするにはどうすればよいですか?後で別のモジュールによって関数がオーバーライドされていないかどうかを調べることはできますか?
何か問題がありますか?私はJSの初心者なので、私はjavascriptのアンチパターンを使用する可能性があることを認識しています。それらを指摘するように自由に感じてください。
は、私が追加され、今では実際に動作するいくつかの欠落宣言がありました、ありがとうございました。重要な変更は、あなたが提案したように、 'extend'の代わりに' include'を使うことでした。どうもありがとうございました。 –
乾杯、あなたは歓迎です –