【问题标题】:How can i call a controller method or action from route setupController in ember 2.0如何在 ember 2.0 中从路由 setupController 调用控制器方法或操作
【发布时间】:2015-10-22 21:11:49
【问题描述】:

我试图从路由中调用控制器动作。

setupController(controller, model) {


        controller.set('model', model);

        //controller.send('showInvite');
        controller.send('switchTabByName',model.get('name'));


        if(!this.get('state.user.hasCopiedInviteLink')) {
            controller.send('showInvite');
        }

但我无法获得“publish.continue 没有处理“switchTabByName”操作。”

我尝试直接调用方法而不进行操作,但也没有成功。我怎样才能做到这一点?

这是我在控制器中的操作块

actions: {

        switchTabByName(tabName){
                //console.log('Will switch to tab ',tabName);
                let tab = this.get('tabs').find((item)=> {return item.get('name')===tabName; } );
                this.switchTab(tab);

        },

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    这是我第一次自动回答我的问题,反正我并不完全满意所以我最终这样做了

    this.controllerFor('publish').send('switchTabByName',model.get('name'));
    

    我不明白为什么这行得通,而不是后者。但这很有效,所以如果有人遇到同样的问题。希望这会有所帮助

    【讨论】:

    • 在 ember-twiddle 中尝试了一个类似的测试用例,对我来说效果很好。在对三个不同的路由使用单个模板和控制器时,我确实遇到过这种问题。这是适合你的场景吗?
    • 类似,是的,我正在使用自定义选项卡组件,并希望创建一个路由,将用户设置在某个选项卡中,模型作为状态的表示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多