The Wayback Machine - https://web.archive.org/web/20220409044043/https://github.com/vuejs/eslint-plugin-vue/issues/1812
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"boundOnly" option for vue/v-on-function-call #1812

Open
ilyub opened this issue Mar 2, 2022 · 4 comments
Open

"boundOnly" option for vue/v-on-function-call #1812

ilyub opened this issue Mar 2, 2022 · 4 comments

Comments

@ilyub
Copy link

@ilyub ilyub commented Mar 2, 2022

Please describe what the rule should do:

Same as:
https://typescript-eslint.io/rules/unbound-method/

What category should the rule belong to?
[ ] Enforces code style (layout)
[+] Warns about a potential error (problem)
[ ] Suggests an alternate way of doing something (suggestion)
[ ] Other (please specify:)

Provide 2-3 code examples that this rule should warn about:

<script lang="ts">
import { defineComponent } from "vue";

class C {
  public f(): number {
    return this.x;
  }

  protected x = 1;
}

export default defineComponent({
  name: "page-settings",
  setup() {
    return {
      c: new C()
    };
  }
});
</script>

<template>
  <q-button @click="c.f" />
</template>

Additional context

New rule should report missing brakets for <q-button @click="c.f" />

Without brackets it throws run-time error:
image

@FloEdelmann
Copy link
Member

@FloEdelmann FloEdelmann commented Mar 2, 2022

@ilyub
Copy link
Author

@ilyub ilyub commented Mar 2, 2022

@FloEdelmann, thx for the response.

Is it possible to add an option to v-on-function-call that will disallow brackets for @click="fn", but will require brackets for @click="cls.method()"?

The point is that currently "v-on-function-call" does not do what "unbound-method" does.
This is unbound method: "cls.method" (because it consists of two parts). It needs bracket.
This is not unbound method: "fn" (because it has only one part). It can be left without bracket.

@FloEdelmann
Copy link
Member

@FloEdelmann FloEdelmann commented Mar 3, 2022

A new option "boundOnly" (instead of "always" and "never") would be fine for me. Would you like to implement it?

If implemented, this option's docs should link to the explanation in typescript-eslint rule's documentation.

@ilyub
Copy link
Author

@ilyub ilyub commented Mar 4, 2022

Thx for accepting it as proposition.
I am familiar with typescript/eslint plugin development, but eslint-plugin-vue is totaly new to me - so, I'll have to wait for somebody more familiar with it.
If I have time, I will more likely try to write a wrapper rule that would allow to use any typescript/eslint rule inside SFC.

@FloEdelmann FloEdelmann changed the title Rule Proposal: Equivalent of @typescript-eslint/unbound-method "boundOnly" option for vue/v-on-function-call Mar 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants