对于刚接触OOP语言的初学者来说,这个问题基本上是一个好问题。我发现您的代码here表示使用afterConstruct扩展模块是一种很好的做法。您能教我们如何从其他模块进行 EXTEND 以及从其他模块进行 IMPLEMENT 扩展方法吗?在此处构建我自己的联系表单模块时,我遵循了您的示例:
afterConstruct: function(self) {
self.setSubmitSchema();
},
construct: function(self, options) {
self.setSubmitSchema = function() {
self.submitSchema = self.apos.schemas.subset(self.schema,
[ 'name', 'email', 'title', 'body' ]
);
};
以下是我使用Moog Type的观点,对吗?
构造->构造所附带的每种方法。 beforeConstruct ->仅当您将诸如 addFields , removeFields 和 alterFields 之类的选项扩展到它时才适用。 afterConstruct ->适用于扩展模块/方法
答案 0 :(得分:1)
这个问题太笼统了,但是您所需要的是正确完成此问题的一个很好的例子。
为此,只需查看我们实现的任何模块模块,例如查看apostrophe-redirects,该模块即可扩展模块,并添加beforeSave
方法重写以执行某些自定义操作。
另请参见apostrophe-samples项目,该项目包含带有覆盖的piece模块的几个示例。同样,它们扩展了apostrophe-pieces
,因此可以证明您的要求。
关于三个功能:
beforeConstruct
用于先调整options
,然后再扩展模块才能看到它。例如,当子类需要向addFields
添加字段时有用。
construct
用于将方法附加到self
。
afterConstruct
用于初始化,通过调用其中一些方法来完成。现在是合适的时机,因为子类模块有机会在afterConstruct
运行之前覆盖其中的某些方法。