代码之家  ›  专栏  ›  技术社区  ›  Marco Prins

Ember:从组件到应用程序控制器的气泡动作

  •  2
  • Marco Prins  · 技术社区  · 9 年前

    我在ember中有一个组件,它需要向应用程序控制器发送一个动作(带一个参数)。无论该组件呈现在何处,它都需要在应用程序控制器上调用完全相同的操作。

    应用程序控制器

    export default Ember.Controller.extend({
      actions: {
        addAlert: function(message) {
          this.set('message', message);
        },
        removeAlert: function(message) {
          this.set('message', message);
        }
      }
    });
    

    我该如何处理?从开始到结束。

    1 回复  |  直到 9 年前
        1
  •  6
  •   Patsy Issa    9 年前

    动作不会通过控制器冒泡,当触发一个动作时,它将通过当前路由的控制器,如果没有处理它,它会冒泡到当前路由,一直到顶层路由(应用程序)。

    如果该操作必须在控制器上设置属性,则可以直接从应用程序路由设置该属性(尽管不建议这样做)。

    // routes/application.js
    actions {
      addAlert(message) {
          this.controller.set('message', message);
        },
        removeAlert(message) {
          this.controller.set('message', message);
        }
    }
    

    有关详细信息,请阅读 action bubbling .