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

Closed
iliubinskii opened this issue Mar 2, 2022 · 5 comments
Closed

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

iliubinskii opened this issue Mar 2, 2022 · 5 comments

Comments

@iliubinskii
Copy link

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

This rule does already exist: https://eslint.vuejs.org/rules/v-on-function-call.html

@iliubinskii
Copy link
Author

@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

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.

@iliubinskii
Copy link
Author

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
@FloEdelmann
Copy link
Member

Note that the vue/v-on-function-call rule was deprecated in favor of the new vue/v-on-handler-style rule in #2009. Is this request solved with the new rule? If it isn't, please open a new issue to keep the discussion clear.

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