2014-03-05 51 views
1

我試圖擴展一個現有的KendoUI部件(自動完成)。由於我們的應用程序已經使用了很多自動填充小部件的實例,因此我不想創建一個新的小部件來擴展當前的小部件,而是替換現有的小部件。如何更換現有的Kendo UI小部件?

我已經找到這個話題:kendo-ui autocomplete extend,但不幸的是點創建一個新的。

我嘗試下面的代碼:

var plg = kendo.ui.AutoComplete.extend({ 
     options: { 
      name: 'AutoCompleteMyOne' 
     }, 
     init: function (_element, _options) 
     { 
      kendo.ui.AutoComplete.fn.init.call(this, _element, _options); 

     /*...*/ 
     } 
    }); 
    kendo.ui.plugin(plg); 

點是選項的名稱屬性。如果名稱是唯一的「自動完成」初始化不工作了:這條線的endlessloop結束:

kendo.ui.AutoComplete.fn.init.call(this, _element, _options); 

我怎樣才能調用基初始化或者是不是真的被覆蓋?

回答

5

如果更換自動完成小工具,那麼你的代碼是有效地調用自身的init方法遞歸。因此,您需要存儲現有的方法並調用該方法,例如像這樣:

var plg = (function (init) { 
    return kendo.ui.AutoComplete.extend({ 
     options: { 
      name: 'AutoComplete' 
     }, 
     init: function (_element, _options) { 
      // modify the placeholder 
      _options.placeholder += " (custom)"; 

      init.call(this, _element, _options); 

      /*...*/ 
     } 
    }); 

})(kendo.ui.AutoComplete.fn.init); 
kendo.ui.plugin(plg); 

demo