我想了解如何调用插件中的函数。
的代码段export default Ember.Component.extend({
...
_initGoogleDFP: function() {
var self = this;
loadGoogle(this.siteSettings).then(function() {
...
});
}.on('didInsertElement'),
...
});
没有提到_initGoogleDFP
函数显然是有人调用的,但它以某种方式从emberjs
的内容调用。
初始化emberjs
组件的原则是什么?
_initGoogleDFP
如何调用emberjs
?
答案 0 :(得分:2)
Ember.on
函数(或Function.prototype.on
)返回一个特殊函数,其中包含一些Ember实现细节:
export default Ember.Component.extend({
...
_initGoogleDFP: <some-special-function-object>,
...
});
Ember迭代你的类定义中的键,寻找这些特殊对象,并最终调用Ember.addListener('didInsertElement', yourFunction)
。
通常应避免使用.on
。这令人困惑。如果您有两个.on('didInsertElement')
,那么它们会以何种顺序被调用?谁知道呢。
编写代码的首选方法是覆盖didInsertElement
:
export default Ember.Component.extend({
...
didInsertElement() {
this._super(...arguments);
var self = this;
loadGoogle(this.siteSettings).then(function() {
...
});
}
...
});
如果您需要从其他地方拨打_initGoogleDFP
,请将其设为功能,然后您可以从didInsertElement
拨打电话:
export default Ember.Component.extend({
...
_initGoogleDFP: function() {
var self = this;
loadGoogle(this.siteSettings).then(function() {
...
});
},
didInsertElement() {
this._super(...arguments);
this._initGoogleDFP();
}
...
});