【问题标题】:Use an application's route's action in a template component在模板组件中使用应用程序的路由操作
【发布时间】:2016-06-03 20:16:42
【问题描述】:

首先,我对 Ember 还很陌生,所以事情的交互方式很容易让我感到困惑。

我正在使用现有的 Ember 应用程序。在应用程序的routes/application.js.es6 中定义了操作。鉴于这些操作在应用程序路由中,我可以从任何地方访问它们吗?

我特别希望在模板/组件中使用应用程序的路由操作之一。

在组件的js文件中,我需要注入或导入一些东西来使用应用程序路由中的动作吗?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    This demo perfectly demonstrates the thing you try to achieve.

    首先,在应用路由中定义action:

    import Ember from 'ember';
    
    export default Ember.Route.extend({
      actions: {
        myActionFromApp() {
            console.log('myAction from application fired');
        }
      }
    });
    

    然后在模板中将动作名称传递给组件:

    {{my-component myAction='myActionFromApp'}}
    

    然后您可以从组件调用您的 ApplicationRoute 操作:

    import Ember from 'ember';
    
    export default Ember.Component.extend({
      actions: {
        myAction() {
            this.sendAction('myAction');
        }
      }
    });
    

    在演示中,当有人点击按钮时我会这样做:

    <button {{action 'myAction'}}>Fire action myAction</button>
    

    控制台中的结果是:

    来自应用程序的 myAction 已触发

    当您点击预期的按钮时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 2020-02-08
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多