我有一个链接,看起来像这样灰烬路由器:如何使用transitionTo
index.html#/calendar/year/month
这是我建立了我的路线:
App.Router.map(function() {
this.resource('calendar', {path: 'calendar/:currentYear/:currentMonth'});
});
App.CalendarRoute = Ember.Route.extend({
model: function (params) {
var obj = {
weeks: calendar.getDaysInMonth(params.currentMonth, params.currentYear),
currentMonth: params.currentMonth,
currentYear: params.currentYear
};
return obj;
},
setUpController: function(controller, model) {
controller.set('content', model);
}
});
我可以这样得到它:
var currentMonth = this.get('content.currentMonth');
var nextMonth = parseInt(currentMonth)+1;
var route = '#/calendar/'
var year = this.get('content.currentYear');
window.location.href= route + year + '/' + nextMonth;
但我想用路由器代替。
我想:
var router = this.get('target');
router.transitionTo('#calendar/'+year + '/' + nextMonth);
但我得到这个错误:
Uncaught Error: assertion failed: The route #calendar/2013/5 was not found
我也试过:
var router = this.get('target');
router.transitionTo('calendar/'+year + '/' + nextMonth);
但是,这也给了我一个错误:
Uncaught Error: assertion failed: The route calendar/2013/5 was not found
编辑:显示我上面的路由
嗯,在''router.transitionTo('#calendar /'+ year +'/'+ nextMonth);'你在#之后缺少一个“/”。我不知道还有什么可能是错误的,但我通常使用'this.transitionToRoute('example.name');'或'App.Router.router.transitionTo('example.name');''。 – 2013-04-10 12:43:48
听起来不错,所以我只是试过:router.transitionTo('#/ calendar /'+ year +'/'+ nextMonth);但后来我得到未捕获的错误:断言失败:没有找到路线#/ calendar/2013/5 – redconservatory 2013-04-10 12:52:15
@redconservatory我相信这个问题与您的路线定义有关。这可能应该是一个嵌套路线,其中一个分段为一年,另一个分段为一个月份。此外,他目前正在做的方式似乎在该路线中缺少'model'方法中的'params'参数。 – MilkyWayJoe 2013-04-10 13:36:20