我想通过 self.drawer.toggle(e!=='form')修改此行 self.drawer.toggle(e ==='graph') 该类的方法“start”:
instance.web.SearchView = instance.web.Widget.extend({
template: "SearchView",
start: function() {
var self = this;
var p = this._super();
this.$view_manager_header = this.$el.parents(".oe_view_manager_header").first();
this.setup_global_completion();
this.query = new my.SearchQuery()
.on('add change reset remove', this.proxy('do_search'))
.on('change', this.proxy('renderChangedFacets'))
.on('add reset remove', this.proxy('renderFacets'));
if (this.options.hidden) {
this.$el.hide();
}
if (this.headless) {
this.ready.resolve();
} else {
var load_view = instance.web.fields_view_get({
model: this.dataset._model,
view_id: this.view_id,
view_type: 'search',
context: this.dataset.get_context(),
});
this.alive($.when(load_view)).then(function (r) {
self.fields_view_get.resolve(r);
return self.search_view_loaded(r);
}).fail(function () {
self.ready.reject.apply(null, arguments);
});
}
var view_manager = this.getParent();
while (!(view_manager instanceof instance.web.ViewManager) &&
view_manager && view_manager.getParent) {
view_manager = view_manager.getParent();
}
if (view_manager) {
this.view_manager = view_manager;
view_manager.on('switch_mode', this, function (e) {
self.drawer.toggle(e === 'graph');
});
}
return $.when(p, this.ready);
},
我是否要覆盖新课程中的所有行,还是有其他方式?
答案 0 :(得分:0)
我建议最好的想法是让你的类的构造函数以该名称作为参数。
我不熟悉您正在使用的库,但就经典继承而言,您的类看起来像这样。
class SearchView extends Widget {
constructor(name='graph') {
this.name = name;
view_manager.on('switch_mode', this, function (e) {
self.drawer.toggle(e === this.name);
});
}
}
默认情况下,这会创建使用'graph'
的实例,如果您想要使用'form'
的实例,那么您将执行以下操作:
var searchView = new SearchView('form');
您不需要将其子类化。