ember must call super method from component 错误
ember must call super method from component error
我只是用我的自定义混合扩展我的 ember 组件 class 但不幸的是我的日志说了一个错误
Assertion Failed: You must call `this._super(...arguments);` when overriding `init` on a framework object. Please update <cahyowhy-mini-blog@component:post-item::ember395> to call `this._super(...arguments);` from `init`.
Error
但是在我的组件(post-item)中我被声明为我的 init 方法
import Ember from 'ember';
import BaseController from '../controllers/base-controller';
import Likepost from '../models/likepost';
export default Ember.Component.extend(BaseController, {
posts: "",
applyLayout(){
Ember.$(document).ready(function () {
let $grid = Ember.$('#post-container').imagesLoaded(function () {
$grid.masonry({
itemSelector: '.post-item',
percentPosition: true,
columnWidth: '.post-item',
});
});
});
},
init(){
this._super(...arguments);
},
..... more code
这是我的基地控制器class
import Ember from 'ember';
export default Ember.Mixin.create({
init(){
//this._super(...arguments); //nek ra dipanggil neng component post item ra keno :(
let afterRenderExist = this.afterRender !== undefined && typeof this.afterRender === "function";
if (this.applicationRoute.documentReady && afterRenderExist) {
Ember.run.schedule('afterRender', this, function () {
this.afterRender();
});
} else if (afterRenderExist) {
this.applicationRoute.on('onDocumentReady', this, function () {
this.afterRender();
});
}
},
但是当我尝试在我的基本控制器中取消注释此语法 this._super(...arguments);
时。错误消失了...
谁能解决这个问题:( ...
函数init()
一直存在并定义在Ember中(即使不是你自己写的)。 init()
将在幕后做几件事,以确保您的 Ember 应用程序中的所有内容都正常工作。
通过扩展您自己的 init()
版本,重要的是在您编写任何需要编写的内容之前保留 init()
所做的关键功能。
这就是为什么你应该打电话给 this._super(...arguments);
。否则你基本上会破坏 Ember 因为你覆盖了一些重要的功能。
所以基本上,您实际上需要 this._super(...arguments);
,在 init()
函数的开头,以便一切正常工作。这就是为什么注释掉它会给你一个错误。如果你取消注释,那么一切都会好起来的。
想法是您需要调用 Ember.Component
中定义的 init
,如果不这样做,您将收到断言错误。
Ember.Component
basecontroller (this._super is referring to Ember.Component)
post-item (this._super is referring to basecontroller)
只是为了到达父级 class,即 Ember.Component
。我们需要在所有地方 this._super
。始终为 init 方法调用 this._super(...arguments)
是良好做法。
我只是用我的自定义混合扩展我的 ember 组件 class 但不幸的是我的日志说了一个错误
Assertion Failed: You must call `this._super(...arguments);` when overriding `init` on a framework object. Please update <cahyowhy-mini-blog@component:post-item::ember395> to call `this._super(...arguments);` from `init`.
Error
但是在我的组件(post-item)中我被声明为我的 init 方法
import Ember from 'ember';
import BaseController from '../controllers/base-controller';
import Likepost from '../models/likepost';
export default Ember.Component.extend(BaseController, {
posts: "",
applyLayout(){
Ember.$(document).ready(function () {
let $grid = Ember.$('#post-container').imagesLoaded(function () {
$grid.masonry({
itemSelector: '.post-item',
percentPosition: true,
columnWidth: '.post-item',
});
});
});
},
init(){
this._super(...arguments);
},
..... more code
这是我的基地控制器class
import Ember from 'ember';
export default Ember.Mixin.create({
init(){
//this._super(...arguments); //nek ra dipanggil neng component post item ra keno :(
let afterRenderExist = this.afterRender !== undefined && typeof this.afterRender === "function";
if (this.applicationRoute.documentReady && afterRenderExist) {
Ember.run.schedule('afterRender', this, function () {
this.afterRender();
});
} else if (afterRenderExist) {
this.applicationRoute.on('onDocumentReady', this, function () {
this.afterRender();
});
}
},
但是当我尝试在我的基本控制器中取消注释此语法 this._super(...arguments);
时。错误消失了...
谁能解决这个问题:( ...
函数init()
一直存在并定义在Ember中(即使不是你自己写的)。 init()
将在幕后做几件事,以确保您的 Ember 应用程序中的所有内容都正常工作。
通过扩展您自己的 init()
版本,重要的是在您编写任何需要编写的内容之前保留 init()
所做的关键功能。
这就是为什么你应该打电话给 this._super(...arguments);
。否则你基本上会破坏 Ember 因为你覆盖了一些重要的功能。
所以基本上,您实际上需要 this._super(...arguments);
,在 init()
函数的开头,以便一切正常工作。这就是为什么注释掉它会给你一个错误。如果你取消注释,那么一切都会好起来的。
想法是您需要调用 Ember.Component
中定义的 init
,如果不这样做,您将收到断言错误。
Ember.Component
basecontroller (this._super is referring to Ember.Component)
post-item (this._super is referring to basecontroller)
只是为了到达父级 class,即 Ember.Component
。我们需要在所有地方 this._super
。始终为 init 方法调用 this._super(...arguments)
是良好做法。