gpt4 book ai didi

javascript - Emberjs 路由器 : state does not change when the url hash is changed

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

Emberjs 核心有一个新的路由器实现,它扩展了 Ember.StateManager。这是我目前实现的基本路由器(使用 coffeescript):

Emee.set "stateManager", Ember.Router.create
location: "hash"
enableLogging: true

start: Ember.State.extend
index: Ember.State.extend
route: "/"
connectOutlets: (manager) ->
console.log(manager)

tasks: Ember.State.extend
route: "/tasks"

index: Ember.State.extend
route: "/"

show: Ember.State.extend
route: "/show"

users: Ember.State.extend
route: "/users"

index: Ember.State.extend
route: "/"

Emee 是我的 Ember 命名空间。我有几个问题:

1) 当一个页面加载了一个带有哈希 http://localhost:3000/#tasks 的 url 时,它会移动到正确的 start.tasks.index 状态,但在 hashChange 上它只是向当前状态的 routePath 发送消息。Emee.stateManager.route("/tasks") 也做同样的事情。它不改变状态,并向当前状态的 routePath 发送消息。我们需要自己实现 routePath 吗?如果不是,我们如何通过提供路由来更改状态?

2) 我看到很多关于在进入状态时调用哪个函数的变化。截至目前,“connectOutlets”似乎是进入状态时调用的函数的名称。现在这是设置 Controller 的正确页面吗?

更新

将 ember 代码更新到最新版本。我的路由器现在看起来像这样:

Emee.Router = Ember.Router.extend
location: "hash"
enableLogging: true

root: Ember.State.extend
index: Ember.State.extend
route: "/"
redirectsTo: 'tasks.index'

tasks: Ember.State.extend
route: "/tasks"

index: Ember.State.extend
route: "/"
connectOutlets: (manager) ->
console.log("in index");

show: Ember.State.extend
route: "/show"
connectOutlets: (manager) ->
console.log("in show");

users: Ember.State.extend
route: "/users"

index: Ember.State.extend
route: "/"

Emee.initialize()

浏览器的前进和后退按钮仍然不起作用。他们调用 routePath 只是返回,因为它们都是叶节点。我想我遗漏了一些小东西,但我还没有弄明白。

最佳答案

这似乎是路由器当前实现中的一个错误查看开发人员在 https://github.com/emberjs/ember.js/issues/887#issuecomment-5946213 留下的评论寻求解决方法。

关于javascript - Emberjs 路由器 : state does not change when the url hash is changed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10756146/

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