gpt4 book ai didi

javascript - ember 必须从组件错误中调用 super 方法

转载 作者:行者123 更新时间:2023-12-01 03:18:48 25 4
gpt4 key购买 nike

我只是用我的自定义 mixins 类扩展了我的 ember 组件,但不幸的是我的日志显示了一个错误

    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

但在我的组件(后项)中,我已声明我的 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

这是我的基本 Controller 类

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();
});
}
},

但是当我尝试在我的基本 Controller 中取消注释此语法 this._super(...arguments); 时。错误消失了...

谁能解决这个问题:( ...

最佳答案

想法是您需要调用 init ,它是在 Ember.Component 中定义的,如果不这样做,您将收到断言错误。

Ember.Component
basecontroller (this._super is referring to Ember.Component)
post-item (this._super is referring to basecontroller)

只需到达父类,即Ember.Component。我们需要在所有地方使用this._super。始终为 init 方法调用 this._super(...arguments) 是很好的做法。

关于javascript - ember 必须从组件错误中调用 super 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45357756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com