gpt4 book ai didi

javascript - Ember.js 路由器和 initialState 中的嵌套路由

转载 作者:行者123 更新时间:2023-11-29 10:20:13 25 4
gpt4 key购买 nike

我正在尝试了解 emeber.js 路由。我不太确定,为什么这不是路由器的有效定义

Platby.Router = Ember.Router.extend   
location: 'hash'
enableLogging : true

root: Ember.Route.extend
index: Ember.Route.extend
route: '/'
initialState: 'batches'
enter: (router) -> console.log 'root.index'

batches: Ember.Route.extend
initialState: 'index'
route: '/batches'
enter: (router) -> console.log 'root.index.batches'

index: Ember.Route.extend
route: '/'
enter: (router) -> console.log 'root.index.batches.index'

进入根 url 后,我在控制台中得到以下输出。

STATEMANAGER: Entering root
STATEMANAGER: Sending event 'navigateAway' to state root.
STATEMANAGER: Sending event 'unroutePath' to state root.
STATEMANAGER: Sending event 'routePath' to state root.
Uncaught Error: assertion failed: Could not find state for path

谁能给我解释一下,问题出在哪里?

最佳答案

我只能根据你给出的信息来回答...关于错误uncaught Error: assertion failed: Could not find state for path,这是因为你没有叶状态匹配路径“/”。

root.index 匹配 '/' 但它不是叶子,它有一个子状态 batches 因此路由器将查找 root.index 用于匹配 '/' 但它没有找到,它只找到 batches (匹配 '/batches')和错误被抛出。必须有叶子匹配路由路径。

至于帮助您实际尝试做的事情,您似乎希望“/”重定向到“/batches”?如果是这样的话:

Platby.Router = Em.Router.extend
root: Em.Route.extend
index: Em.Route.extend
route: '/'
redirectsTo: 'batches'
batches: Em.Route.extend
route: '/batches'
connectOutlets: ...

您可以像上面那样使用redirectsTo,这是一个快捷方式:

Platby.Router = Em.Router.extend
root: Em.Route.extend
index: Em.Route.extend
route: '/'
connectOutlets: (router) ->
router.transitionTo('batches')
batches: Em.Route.extend
route: '/batches'
connectOutlets: ...

但是,您不能使用 redirectsTo 并拥有自己的 connectOutlets,因此如果您需要在转换之前在 root.index 中执行任何操作到 root.batches 你会想要使用第二种方式并在 transitionTo

之前处理你的业务

关于javascript - Ember.js 路由器和 initialState 中的嵌套路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13644082/

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