ember-routemanager没有响应set('location','...')

时间:2012-04-20 00:33:55

标签: url-routing ember.js

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

This jsfiddle显示状态管理器正确设置并输入条目状态。在两秒半之后,脚本运行App.stateManager.set('location', 'desktop');,根据ember-routemanager README,它应该将我带到“desktop”作为其路由参数的状态(对吗?)。但事实并非如此。

(这与我在jsfiddle中克隆问题的距离非常接近,我无法轻松地在位置栏中添加路径。当我在我的开发环境中执行此操作时,例如http://localhost:9292/desktop或{ {3}},很明显应用程序没有使用路径;它返回“未找到实体:/桌面”。)

请注意,使用goToState代替设置location的{​​{3}}工作正常。

我做错了什么?


代码:

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'));
            }
        })

    })
});

1 个答案:

答案 0 :(得分: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');
    }
})