我有一个应用程序,我正在尝试使用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'));
}
})
})
});
答案 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');
}
})