2016-08-26 17 views
0

プラグインの機能がどのように呼び出されているかを知りたい。emberjs関数はどのように呼び出されますか?

ここdiscourse-adplugin

export default Ember.Component.extend({ 
    ... 
    _initGoogleDFP: function() { 
    var self = this; 
    loadGoogle(this.siteSettings).then(function() { 
     ... 
    }); 
    }.on('didInsertElement'), 
    ... 
}); 

からのコードスニペットは、_initGoogleDFP機能が明らかに誰かによって起動されますが、それはemberjsの根性から呼び出す何とかだということは言及はありませんです。

emberjsコンポーネントを初期化する原則は何ですか? はどのように呼び出されますかemberjs

答えて

2

Ember.on機能(またはFunction.prototype.on)は、いくつかのエンバー実装の詳細と特殊機能を返します。

export default Ember.Component.extend({ 
    ... 
    _initGoogleDFP: <some-special-function-object>, 
    ... 
}); 

エンバーは、これらの特別なオブジェクトを探して、あなたのクラス定義のキーを反復し、最終的にEmber.addListener('didInsertElement', yourFunction)を呼び出します。


通常は、.onを使用しないでください。ややこしい。もしあなたが2つの.on('didInsertElement')を持っていたら、どちらの順番で彼らは呼ばれますか?知るか。

あなたのコードを書くための好ましい方法は、didInsertElement上書きすることです:あなたは、他の場所から_initGoogleDFPを呼び出し、それを機能させるために必要がある場合は

export default Ember.Component.extend({ 
    ... 
    didInsertElement() { 
    this._super(...arguments); 

    var self = this; 
    loadGoogle(this.siteSettings).then(function() { 
     ... 
    }); 
    } 
    ... 
}); 

を、あなたはdidInsertElementからそれを呼び出すことができます。

export default Ember.Component.extend({ 
    ... 
    _initGoogleDFP: function() { 
    var self = this; 
    loadGoogle(this.siteSettings).then(function() { 
     ... 
    }); 
    }, 

    didInsertElement() { 
    this._super(...arguments); 
    this._initGoogleDFP(); 
    } 
    ... 
}); 
+0

このコードはdiscourseプラグインからのものです。そのため、didInsertElementイベントに接続するため、コンポーネントは談話環境で非同期に読み込まれます。 – megas

関連する問題