Ember router: how to use transitionTo

前端 未结 2 1059
孤街浪徒
孤街浪徒 2020-12-10 09:28

I have a link that looks like this

index.html#/calendar/year/month

This is how I set up my routes:

App.Router.map(function(         


        
相关标签:
2条回答
  • 2020-12-10 09:43

    Oposite from what I said in the comments, this can actually be done without the need of nested routes, using the Route#serialize.

    I've made this fiddle (demo here) with a scenario similar to what you described:

    In the application, I'm storing the month and year arguments

    window.App = Ember.Application.create({
        title: 'Cool App',
        calendar: { 
            month: new Date().getMonth()+1, 
            year: new Date().getFullYear() 
        }
    });
    

    Defined the routes

    App.Router.map(function() {
        this.route("home");
        this.resource('calendar', { path: 'calendar/:year/:month'});
    });
    

    In the calendar route, I've added the serialize method, to translate the properties in obj to the app, then I connected with 3rd party lib in setupController to get the days property and set its content.

    App.CalendarRoute = Em.Route.extend({
        activate: function() {
            $(document).attr('title','Events')
        },
        serialize: function(obj) {
            return {
                year: obj.year, month: obj.month
            }
        },
        setupController: function(controller, model) {
            var obj = {
                days: calendar.getDaysInMonth(model.month, model.year),
                year: model.year,
                month: model.month
            };
            controller.set('content', obj);
        }
    });
    

    In Handlebars, using a {{linkTo}} helper, I am passing the calendar property defined in my App class as the argument:

    {{#linkTo calendar App.calendar tagName="li"}}
        <a {{bindAttr href="view.href"}}>
            Calendar
        </a>
    {{/linkTo}}
    

    This will generate a link to ~/#/calendar/2013/4

    0 讨论(0)
  • 2020-12-10 09:58

    The router is for more than a url manager. It manages the state for the entire application. In order to fully help you it would be better to see more code. Have you created routes? Are you just trying to go to a 'url' that is not handled by the ember app?

    this.transistionTo(routeName) expects to receive a named route as far a I know. It will then generate the correct url for that route. If you have not setup any routes then I don't think you are able to use it.

    0 讨论(0)
提交回复
热议问题