I have a normal single file component which has both a computed property and some methods:
<template>...</template> <script> ... export default { props: ['matches'], data: function() {...} // No problem with these computed: { formattedMatches: function () { let formatted = []; this.matches.forEach(function($match, $i, $arr) { formatted[$i] = $match[0]; }; }); return formatted; } ... methods: { getData: function() { return this.formattedMatches(); }, ... } } <script>
When I try to access this.formattedMatches()
from the method, I get a [Vue warn]: Error in render: "TypeError: this.formattedMatches is not a function"
.
What is the correct way to achieve what I want? Thanks in advance.
In Vue. js, computed properties enable you to create a property that can be used to modify, manipulate, and display data within your components in a readable and efficient manner. You can use computed properties to calculate and display values based on a value or set of values in the data model.
Yes, you can setup watcher on computed property, see the fiddle.
You can access computed properties like a property
, not like a method
:
// correct console.log(this.myProperty); // wrong console.log(this.myProperty());
Note: If you treat it as a method with paracentesis ()
it shall throw an error like this Error in v-on handler: "TypeError: this.myProperty is not a function"
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With