我想在子类中定义一个静态属性,并在超类中访问它。那可能吗?错误消息显示:model is not defined。我只想让我的 FieldsetController 了解模型Fieldset:import Model from './../../library/Model'class Fieldset extends Model { static name = 'fieldset' static pluralName = 'fieldsets'}export default Fieldset代码如下所示:字段集/controller.js:import Controller from './../../library/controller'import Fieldset from './model'class FieldsetController extends Controller { static model = Fieldset}export default FieldsetController库/controller.js:class Controller { static index(request, response) { const data = model.getAll() response.render(`admin/${model.pluralName}/index`) } static create(request, response) {} static store(request, response) {} ...}export default Controller
1 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
您可以从代码中的每个位置访问静态属性:
const model = FieldsetController.model;
静态成员(属性或方法)的特点是它们不绑定到类的任何实例。不调用就可以访问new Class(),而且不能通过实例访问。
更新
正如@Mohammad Dehghan 在评论中所写的那样,您应该避免循环依赖的问题。所以更好的方法是删除静态修饰符,并将模型传递给超级函数:
class FieldsetController extends Controller {
model = Fieldset
constructor() {
super(this.model)
}
}
然后你需要在父类构造函数中定义它:
class Controller {
model;
constructor(model) {
this.model = model;
}
index(request, response) {
// here you can get model
const data = this.model.getAll()
response.render(`admin/${model.pluralName}/index`)
}
}
当您要调用索引方法时,您需要初始化 FieldsetController 类:
const controller = new FieldsetController();
controller.index();
添加回答
举报
0/150
提交
取消