2015-07-12 58 views
2

我對Ember.js相當新,並試圖在我的項目中使用來自ember-cli-jquery模塊(https://www.npmjs.com/package/ember-cli-jquery-ui)的datepicker組件。Ember.js覆蓋附加組件

我面臨的問題是,我需要在加載datepicker組件後運行一些自定義的jquery初始化代碼。

數小時研究後,遇到了這篇文章http://mavilein.github.io/javascript/2013/08/01/Ember-JS-After-Render-Event/這個計算器後:Using Ember.js, how do I run some JS after a view is rendered?

的職位描述使用「didInsertElement」勾運行任何初始化代碼 - 但是,因爲我使用的餘燼,CLI -jquery-ui插件,我不知道如何在不更改/修改node_modules/ember-cli-jquery-ui/addon/mixins/jqui-widget.js中的代碼的情況下執行此操作。

我查看了源代碼代碼爲ember-cli-jquery-ui,事實證明上面提到的方法已被覆蓋。閱讀emberjs上的API文檔,似乎可以擴展任何方法,並可以重新打開類,我只是不知道該怎麼做。 有沒有一種方法可以在我的app.js或index.js中進一步擴展/覆蓋該方法?

任何幫助將不勝感激。

回答

2

您可以擴展組件並調用超級方法。並將其用作您的新組件

//app/components/my-date-picker.js {{my-date-picker}} 
import DatePicker from "path/to/picker" 

export default DatePicker.extend({ 
    didInsertElement:function(){ 
    //do things before super 
    this._super(); //this._super() instead of this.super() 
    //do things after super 
    } 
}) 
+0

這太棒了!終於能夠通過從'ember-cli-jquery-ui/components/jqui-datepicker/component'中導入DatePicker來覆蓋jquery-ui-datepicker; 出口默認DatePicker.extend({ didInsertElement:函數(){// 做事之前超 this._super(); 的console.log( 'CWDatepicker初始化');} });' – MojoJojo