3

Using https://github.com/matfish2/vue-tables-2, with Vue version 2, I can't seem to bind the click event on JSX (on templates->edit):

var tableColumns = ['name', 'stock', 'sku', 'price', 'created_at']
var options = {
  compileTemplates: true,
  highlightMatches: true,
  pagination: {
    dropdown: true,
    chunk: 10
  },
  filterByColumn: true,
  texts: {
    filter: 'Search:'
  },
  datepickerOptions: {
    showDropdowns: true
  },
  templates: {
    edit: function (h, row) {
      return <button v-on:click={this.showItem(row.id)} class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i></button>
    },
    delete: function (h, row) {
      return <a href="javascript:void(0);" class="btn btn-danger btn-sm"><i class="glyphicon glyphicon-erase"></i></a>
    }
  }
}

export default {
  name: 'ItemList',
  data: function () {
    return {
      options: options,
      columns: tableColumns
    }
  },
  methods: {
    showItem: function (id) {
      console.log(id)
    }
  }
}

Changed to JSX on-click, but Vue cannot recognize that. .babelrc already has:

{
    "presets": ["es2015"],
  "plugins": [
    "transform-runtime",
    "transform-vue-jsx"
  ]
}
0
8

I learned this the hard way, since I'm not familiar with JSX when I was looking for the solution for this. However, don't use onClick, but on-click instead.

Here you go:

ES6

edit: (h, row) => {
  return <button on-click={ () => this.showItem(row) } class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i></button>
},

ES5:

edit: function (h, row) {
  return <button on-click={ this.showItem.bind(this, row) } class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i></button>
},

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.