transitionToRoute('route') 从组件内部 [英] transitionToRoute('route') From Inside Component

查看:21
本文介绍了transitionToRoute('route') 从组件内部的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从组件操作内部实用地转换到路由?

我尝试使用 @get('controller').transitionToRoute('images'),但控制器指的是组件本身.我知道组件应该是自包含的,所以我应该使用视图来更好地与控制器/路由交互吗?

I tried to use @get('controller').transitionToRoute('images'), but the controller refers to the component itself. I understand that components should be self contained, so should I be using a view instead to interact with controllers/routes better?

示例

App.ImageEditorComponent = Ember.Component.extend
  ...
  actions:
    delete: ->
      App.Files.removeObject(object)
      @transitionToRoute('images') # This throws an exception
  ...

推荐答案

在父控制器上创建操作.

Create action on parent controller.

export default Ember.Controller.extend({
  actions: {
    transInController() {
       this.transitionToRoute('home')
    }
  }
});

在组件调用时指定此操作.

Specify this action on component call.

{{some-component transInComponent=(action "transInController")}}

v3.4.0 之后(2018 年 8 月 27 日)

some-component.js

some-component.js

export default Component.extend({
  actions: {
      componentAction1() {
          this.transInComponent();
      }
  }
});

OR在 some-component.hbs 中更简单

OR simpler in some-component.hbs

<button onclick={{@transInComponent}}>GO HOME</button>

在 v3.4.0 之前

Ember.component.sendAction

从组件到控制器的发送操作"

"Send Action" from component up to controller

export default Ember.Component.extend({
  actions: {
      componentAction1() {
          this.sendAction('transInComponent');
      }
  }
});

这篇关于transitionToRoute('route') 从组件内部的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆