0

我有一个应用程序,我正在尝试使用ember-routemanager。(我将rake-pipeline其用作构建环境,但我认为这无关紧要。或者是吗?)问题是,该应用程序似乎忽略了位置栏中的路线。

这个 jsfiddle显示了状态管理器正确设置和进入入口状态。两秒半后,脚本运行App.stateManager.set('location', 'desktop');,根据 ember-routemanager README 应该将我移动到以“桌面”作为其路由参数的状态(对吗?)。但事实并非如此。

(这是尽可能接近在 jsfiddle 中克隆问题的方法,我无法轻易在位置栏中放置路径。当我在开发环境中执行此操作时,例如http://localhost:9292/desktophttp://localhost:9292/#desktop,很明显应用程序没有使用路径;它返回“Entity not found: /desktop”。)

请注意,使用而不是设置的同一小提琴的另一个版本工作得很好。goToStatelocation

我究竟做错了什么?


代码:

Sylvius.stateManager = Ember.RouteManager.create({

    initialState: 'launch',
    enableLogging: true,
    wantsHistory: true,

    launch: Em.ViewState.create({
        view: Sylvius.LaunchView,
    }),
    desktop: Em.ViewState.create({
        view: Sylvius.DesktopView,
        route: 'desktop',

        sectionSelected: Em.State.create({
            route: ':sectionSlug',

            enter: function(manager, transition) {
                console.log('We found the slug: ' + Sylvius.stateManager.getPath('params.sectionSlug'));
            }
        })

    })
});
4

1 回答 1

2

您正在/desktop/:sectionSlug为您的sectionSelected州定义一条路线。如果您调用Sylvius.stateManager.set('location', 'desktop/123');,那么它会按预期工作。

如果你想要一个处理路由'/desktop'的状态,你必须创建一个没有route属性的新状态,请参阅http://jsfiddle.net/pangratz666/NMgKH/

index: Em.State.create({
    enter: function(manager, transition){
        this._super();
        console.log('invoked for /desktop');
    }
})
于 2012-04-20T15:26:46.300 回答