当导出一个在 aurelia 中充当 View 模型的 es6 类时,我似乎能够在构造函数和激活函数中设置初始化代码。
这里有什么标准约定吗?
我应该在一个而不是另一个中进行某些初始化吗?
是否为未实现 es6 类的用户提供激活功能?
最佳答案
您可以在构造函数和激活方法中设置实例属性,它们都将由 Aurelia 调用。但是,这里存在某种概念上的差异。
Activate 是屏幕激活生命周期方法之一,理想情况下应该仅用于控制屏幕/ View 模型行为。例如,canDeactivate
方法控制是否可以导航到 View 模型等。Activate 也是一个钩子(Hook),它在 View 模型渲染之前执行(但在 attached
之前)钩)。但是,activate
方法可能永远不会被调用,即路由在构造函数中导航离开或 canActivate
方法拒绝/返回 false - 在这种情况下构造仍将被调用,但激活不会。
另一方面,construct
方法在任何其他钩子(Hook)和方法之前被调用,因此它在 activate
之前被调用。出于这个原因,构造是设置配置属性的主要位置,因为它需要依赖注入(inject)。因此,虽然 activate 采用固定的参数集(params、routeConfig、navigationInstruction),但传递给 constructor
方法的参数列表取决于您注入(inject)到 View 模型类中的服务。
关于javascript - Aurelia 类构造函数与激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31733341/