如何在路由器中指定动作处理程序?

时间:2012-08-03 21:50:51

标签: ember.js ember-old-router

http://jsfiddle.net/pauldechov/u4naE/

App.Router = Em.Router.extend({
enableLogging: true,

root: Em.Route.extend({

    index: Em.Route.extend({
        route: '/',
        connectOutlets: function(router) {
            router.get('applicationController').connectOutlet('application');
        }
    }),

    // why does this work?
    goHome: Em.Route.transitionTo('home'),

    // ...but not this? Am I missing something?
    goHome2: function(router, context) {
        router.transitionTo('home', context);
    },
    home: Em.Route.extend({
        route: 'home'
    })
})
});

我收到一条错误消息: “你必须为事件'goHome2'指定目标状态,以便在当前状态'root.index'中链接到它。”

如何在此处定义处理程序,例如,我可以返回false并停止传播?我是否应该在视图中实际执行此操作,以及如何完成此操作?

谢谢。

1 个答案:

答案 0 :(得分:1)

好的,我想我已经找到了。使用href =“true”时,必须指定函数goHome2是eventTransition。见http://jsfiddle.net/Sly7/u4naE/2/