繁体   English   中英

使用Ember组件中的Morris.js图从组件到控制器的自定义对象冒泡操作事件

[英]Bubbling action event with custom Object from component to controller using Morris.js graph in Ember component

我正在实现一个基本的Ember组件,该组件将呈现Morris.js折线图。 我需要听有关morris的click事件并将其传递给操作。

App.ProgressGraphComponent = Ember.Component.extend(
{
    graph: null,

    tagName: 'div',

    renderGraph: function()
    {
        this.graph.setData(this.get('progress'));

    }.observes('progress'),

    didInsertElement: function()
    {
        var element = this.get('element').id;

        var self = this;

        this.graph = new Morris.Line(
        {
            element: element,
            xkey: 'date',
            ykeys: ['amount', 'increase'],
            labels: ['Amount', 'increase'],
            resize: true,
            smooth: false,
            parseTime:false

        }).on('click', function(i, row){

            self.set('clicked', row);
            self.sendAction('goToSession');

        });
    }

});

在我的控制器中,当触发goToSession事件时,它将传入component对象。 如果它只是通过了row对象,我会更喜欢它。

这是用row参数使action冒泡的正确方法吗?

最好将行对象与操作一起发送。 Ember.js组件允许发送包含参数的动作。 例如:

this.sendAction('goToSession', row);

在动作中(控制器或路由中存在),它会转换为以下形式:

actions: {
  goToSession: function(row) {
    // manipulate morris row
  }
}

Ember.js组件指南中了解有关在组件外部发送动作的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM