如何在JS Odoo 10中扩展或包含auto_complete小部件

时间:2017-07-24 05:58:37

标签: javascript odoo-10

我在Odoo 10中的搜索字段中有一些自定义..

我在svnodoo10 \ addons \ web \ static \ src \ js \ widgets \ auto_complete.js中做了更改

原始代码:

odoo.define('web.AutoComplete', function (require) {
 "use strict";
  var Widget = require('web.Widget');
  return Widget.extend({
 template: "SearchView.autocomplete",
 render_search_results: function (results) {
    var self = this; 
    var $list = this.$el;
    $list.empty();
    results.forEach(function (result) {
      var $item = self.make_list_item(result).appendTo($list);
     result.$el = $item;
   });
   this.show();
  // My customization
  if(this.history)
  {
         var $first_list = self.$('li:first-child');
   }
   //End
},
});

扩展auto_complete_history.js

odoo.define('product.auto_complete_history', function (require) {
"use strict";  
var AutoComplete = require('SearchView.autocomplete');
return AutoComplete.extend({
  template: "SearchView.autocomplete",
 render_search_results: function (results) {
           this._super();
         if(this.history)
     { 

      var $first_list = self.$('li:first-child');

     }
},});
});

但扩展文件不会覆盖代码。 我尝试过Extend,包括但没有运气

请任何人帮助我们如何扩展此文件。

1 个答案:

答案 0 :(得分:1)

您需要要求小部件。从您的代码中,您需要小部件使用的模板。

所以而不是

var AutoComplete = require('SearchView.autocomplete');

var AutoComplete = require('web.AutoComplete');

此外,您可能需要使用.include代替.extend,例如

AutoComplete.include({
    // your changes here ...
});