ratiw / vuetable-2

data table simplify! -- datatable component for Vue 2.x. See documentation at
https://vuetable.com
MIT License
2.16k stars 399 forks source link

passing props to or registering events from the actions component #21

Closed thekordy closed 7 years ago

thekordy commented 7 years ago

Hello,

If I didn't miss it somewhere, Is there a way to pass props or events to the actions custom component without modifying Vuetable?

ratiw commented 7 years ago

@thekordy Not at the moment. I have an idea about this but still haven't had time to work on it.

thekordy commented 7 years ago

What about something like that?

// Vuetable.vue L.50
<component @CustomAction:action-item="fireEvent"  :is="extractArgs(field.name)" :row-data="item"></component>

and then i can emit it in the custom action component

Vue.component('custom-actions', {
...
 methods: {
            onClick: function (action, data) {
                this.$emit('CustomAction:action-item', 'action', {action: action, data: data});
            },
        }

and register it in the vuetable directive

<vuetable ref="vuetable"
                          ...
                          @vuetable:action="onActions"
                ></vuetable>

I then receive it in the Vue instance

onActions(data) {
                if (data.action == 'delete') {
                    this.deleteAction(data.data);
                }
            },

Or do you think there is a better way to register the custom event?

ratiw commented 7 years ago

@thekordy It's already working for event, no modification to vuetable-2 template for that.

You just have to make your component emit the event on the $parent (which is vuetable-2) by changing this:

  this.$emit('CustomAction:action-item', 'action', {action: action, data: data});

to this:

  this.$parent.$emit('CustomAction:action-item', 'action', {action: action, data: data});

then, you can capture the event in the main vue instance, like so

<vuetable ref="vuetable"
                          ...
                          @CustomAction:action-item="onActions"
></vuetable>

Passing additional option to the custom component is the real problem here that I'm thinking about.

franklin-cloud commented 7 years ago

if i use three vuetbale , only one onActions is work, What's the matter?

ratiw commented 7 years ago

@18979687252 I don't see you code so I can't really tell if you did it correctly or not. You can open a new issue and put some of your code. That will make it easier to discuss and work on.

thekordy commented 7 years ago

@ratiw Thanks a lot :+1: