gpt4 book ai didi

aurelia - 如何在 aurelia 中设置默认激活策略

转载 作者:行者123 更新时间:2023-12-02 02:09:05 25 4
gpt4 key购买 nike

Aurelia 通常会忽略查询字符串中的任何更改。

可以将 VM 中的 activationStrategy 设置为 invoke-lifecycle,这样当查询字符串更改时,它将重新运行 VM 中的所有生命周期。

为了防止代码乱七八糟(将其放置在每个虚拟机中),我想将默认的 activationStrategy 设置为 invoke-lifecycle

界面中说明可以可以,但是如何设置呢? https://github.com/aurelia/router/blob/master/src/interfaces.js

最佳答案

在 View 模型上

(我一开始也误读了你的问题,但为了完整性我将其保留)

在 ViewModel 上放置一个方法 defineActivationStrategy() ,您可以从那里返回您希望使用的激活策略的名称或类型。示例:

determineActivationStrategy() {
return "invoke-lifecycle";
}

字符串“invoke-lifecycle”“replace”将起作用。您还可以通过导入枚举 activationStrategy 并返回 activationStrategy.replace/activationStrategy.invokeLifecycle 来使用类型化版本。它们的工作原理相同。

在路由配置中

或者,正如 Marton 所说(他在我之前给出了这个答案),您可以将其直接放在路由配置中作为属性 activationStrategy

如果策略不依赖于 ViewModel 的任何特定状态并且您不希望在 View 模型中乱扔这些东西,那么这种方法更适合。

调用生命周期与替换

在你的问题中你说你想要

re-run the all the life cycles in the VM

请注意,invoke-lifecycle重用了现有的ViewModel,并且只会调用路由器激活生命周期,如下所示:

  1. canDeactivate()
  2. 停用()
  3. canActivate(params、routeConfig、navigationInstruction)
  4. 激活(参数、routeConfig、navigationInstruction)

replace将丢弃现有的ViewModel并路由器激活生命周期之上再次调用整个ViewModel生命周期:

  1. canDeactivate()
  2. 停用()
  3. 分离()
  4. 解除绑定(bind)()
  5. (新实例):constructor()
  6. canActivate(params、routeConfig、navigationInstruction)
  7. 激活(参数、routeConfig、navigationInstruction)
  8. 已创建(owningView,thisView)
  9. 绑定(bind)(bindingContext,overrideContext)
  10. 附加()

因此,如果您确实想运行所有 ViewModel 生命周期步骤,则需要使用replace

关于aurelia - 如何在 aurelia 中设置默认激活策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39999969/

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