【问题标题】:Ember.js Overriding an add-on's componentEmber.js 覆盖附加组件的组件
【发布时间】:2015-07-12 00:19:54
【问题描述】:

我对 Ember.js 相当陌生,并试图在我的项目中使用来自 ember-cli-jquery 模块 (https://www.npmjs.com/package/ember-cli-jquery-ui) 的 datepicker 组件。

我面临的问题是我需要在加载日期选择器组件后运行一些自定义 jquery 初始化代码。

经过几个小时的研究,偶然发现了这篇文章http://mavilein.github.io/javascript/2013/08/01/Ember-JS-After-Render-Event/和这篇stackoverflow帖子:Using Ember.js, how do I run some JS after a view is rendered?

这篇文章描述了使用 'didInsertElement' 挂钩来运行任何初始化代码 - 但是,由于我使用的是 ember-cli-jquery-ui 插件,我不确定如何在不更改/修改代码的情况下执行此操作node_modules/ember-cli-jquery-ui/addon/mixins/jqui-widget.js

我查看了 ember-cli-jquery-ui 的源代码,结果发现上面提到的方法已经被覆盖了。阅读 emberjs 上的 API 文档,似乎可以扩展任何方法并且可以重新打开类,我只是不知道该怎么做。 例如,有没有办法可以在我的 app.js 或 index.js 中进一步扩展/覆盖该方法?

任何帮助将不胜感激。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您可以只扩展组件并调用 super 方法。并将其用作您应用中的新组件

    //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
       }
    })
    

    【讨论】:

    • 这太棒了!终于能够通过:import DatePicker from 'ember-cli-jquery-ui/components/jqui-datepicker/component'; export default DatePicker.extend({ didInsertElement:function(){ //do things before super this._super(); console.log('CWDatepicker initialized'); } }); 覆盖 jquery-ui-datepicker
    猜你喜欢
    • 2019-12-18
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多