Puis-je passer des paramètres dans les propriétés calculées en Vue.Js
est-ce possible de passer des paramètres dans les propriétés calculées en Vue.Js. Je peux voir quand avoir des getters/setter à l'aide calculée, ils peuvent prendre un paramètre et l'affecter à une variable. comme ici, à partir de la documentation:
//...
computed: {
fullName: {
//getter
get: function () {
return this.firstName + ' ' + this.lastName
},
//setter
set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}
//...
Est-ce possible aussi:
//...
computed: {
fullName: function (salut) {
return salut + ' ' + this.firstName + ' ' + this.lastName
}
}
//...
Où propriété calculée prend un argument et renvoie la sortie souhaitée. Cependant lorsque j'essaie ceci, j'obtiens cette erreur:
vue.commun.js:2250 Uncaught TypeError: fullName n'est pas une fonction(...)
Devrais-je être à l'aide de méthodes pour de tels cas?
- Non, vous ne pouvez pas passer des paramètres aux propriétés calculées. Oui, en utilisant des méthodes est la meilleure façon de le faire.
Vous devez vous connecter pour publier un commentaire.
La plupart probablement vous souhaitez utiliser une méthode
Une longue explication
Techniquement, vous pouvez utiliser une propriété calculée avec un paramètre comme ceci:
(Merci
Unirgy
pour le code de base pour cela.)La différence entre une propriété calculée et une méthode, c'est que les propriétés calculées sont mis en cache et changer seulement lorsque leurs dépendances changement. Un méthode permettra d'évaluer à chaque fois qu'il est appelé.
Si vous avez besoin de paramètres, il n'existe généralement pas d'avantages de l'utilisation d'une propriété calculée fonction sur une méthode dans un tel cas. Si il vous permet d'avoir paramétrées fonction get lié à la Vue de l'instance, vous perdez la mise en cache donc pas vraiment de tout gain il y a, en fait, vous risquez de casser la réactivité (AFAIU). Vous pouvez en lire plus à ce sujet en Vue de la documentation https://vuejs.org/v2/guide/computed.html#Computed-Caching-vs-Methods
La seule utile lorsque vous ont pour utiliser un getter et le besoin de l'avoir paramétrée. Cette situation se produit par exemple dans Vuex. en Vuex c'est la seule façon de façon synchrone obtenir paramétrées résultat de la boutique (les actions sont asynchrones). Ainsi, cette approche est inscrit sur la liste officielle Vuex documentation pour ses getters
https://vuex.vuejs.org/guide/getters.html#method-style-access
<span v-text="fullName('Hi')"></span>
au lieu de cela, fonctionne également.<span :text="message"></span>
, ne travaille plus pour Vue 2.0, on doit utiliser à la place:<span v-text="message"></span>
ou<span>{{ message }}</span>
comme indiqué dans ce codepen: codepen.io/Ismael-VC/stylo/dzGzJaVous pouvez utiliser les méthodes, mais je préfère encore utiliser les propriétés calculées au lieu de méthodes, si elles ne sont pas la mutation de données ou n'ont pas d'effets externes.
Vous pouvez passer des arguments pour les propriétés calculées de cette façon (ce n'est pas documenté, mais suggéré par les responsables, ne sais plus où):
EDIT: Merci de ne pas utiliser cette solution, il ne fait que compliquer le code sans les avantages.
Bien, techniquement parlant, on peut passer un paramètre à une fonction calculée, de la même manière, nous pouvons passer d'un paramètre à une fonction get en vuex. Une telle fonction est une fonction qui retourne une fonction.
Par exemple, dans les accesseurs d'un magasin:
Ce getter peut être mappé sur le calcul des fonctions d'un composant:
Et nous pouvons utiliser cette fonction calculée dans notre modèle comme suit:
Nous pouvons appliquer la même approche pour créer un calculées méthode qui prend un paramètre.
Et l'utiliser dans notre modèle:
Ceci étant dit, je ne suis pas en train de dire que c'est la bonne façon de faire les choses avec Vue.
Cependant, j'ai pu observer que lorsque l'élément avec l'ID spécifié est muté dans le magasin, la vue ne doit actualiser son contenu automatiquement avec les nouvelles propriétés de cet élément (la liaison semble fonctionner très bien).
Cependant, il ya des cas où vous avez besoin de le faire.Je vais vous montrer un exemple simple passage de la valeur à la propriété calculée à l'aide de méthodes getter et setter.
Et le script
Lorsque le bouton cliqué, nous sommes de passage à la propriété le nom de "Roland" et dans
set()
nous changeons le nom de 'John Doe' à 'Roland'.Ci-dessous il y a une utilisation lorsque calculée est utilisée avec les méthodes getter et setter.
Disons que vous avez le suivre vuex magasin:
Et dans votre composant que vous souhaitez ajouter
v-model
pour une entrée, mais à l'aide de la vuex magasin.Oui méthodes sont là pour l'utilisation de paramètres. Des réponses est indiqué ci-dessus, dans votre exemple, il est préférable d'utiliser des méthodes car l'exécution est très léger.
Seulement pour la référence, dans une situation où la méthode est complexe et le coût est élevé, vous pouvez mettre en cache les résultats comme suit:
remarque: Lors de l'utilisation de ce, watchout pour mémoire, si traiter avec des milliers
Vous pouvez également passer des arguments à getters par le retour d'une fonction. Ceci est particulièrement utile lorsque vous voulez effectuer une recherche dans un tableau dans le magasin:
Noter que les getters accessibles via des méthodes d'exécuter à chaque fois que vous les appelez, et le résultat n'est pas mis en cache.
Qui est appelée Méthode de Style de l'Accès et est documenté sur le Vue.js docs.
lorsque vous souhaitez utiliser
Filtres sont une fonctionnalité fournie par la Vue des composants qui vous permettent d'appliquer la mise en forme et des transformations à une partie de votre modèle de dynamique de données.
Ils ne changent pas d'un composant de données ou de quoi que ce soit, mais ils ne touchent la sortie.
Dire que vous êtes l'impression d'un nom:
JS:
HTML:
Avis de la syntaxe à appliquer un filtre, qui est | filterName. Si vous êtes familier avec Unix, c'est de l'Unix pipe de l'opérateur, qui est utilisé pour transmettre le résultat d'une opération en tant que contribution à la suivante.
La propriété filters de l'élément est un objet.
Un seul filtre est une fonction qui accepte une valeur et renvoie à une autre valeur.
La valeur retournée est l'un qui est en fait imprimé dans le Vue.js de modèle.
Je ne suis pas entièrement sûr de ce que vous essayez d'atteindre mais on dirait que vous serez parfaitement bien à l'aide de la méthode de la place de la!