Meilleure façon de récupérer des données personnalisées de l'attribut de l'événement dans le Météore?
Je me demandais quel est le meilleur moyen pour récupérer la valeur d'une coutume de données attribut HTML avec Météore objet d'événement?
par exemple:
articles.html
<template name="createArticle">
<form class="new-article">
<input type="text" name="title" placeholder="New title"/>
<input type="text" name="content" placeholder="New content" />
<!-- list categ -->
<label>Category
<select id="categ-list" name="categ">
{{#each categories}}
<option value="{{name}}" data-id={{_id}}>{{name}}</option>
{{/each}}
</select>
</label>
<input type ="submit" value= "Create" class="button">
</form>
</template>
articles.js
Template.createArticle.events({
"submit .new-article": function(event){
var title = event.target.title.value;
var content = event.target.content.value;
var categName = event.target.categ.value;
var categId = event.target.categ.data('id'); //HERE
console.log("test " + categId);
Meteor.call("addArticle", title, content, categId, categName);
event.target.title.value = "";
event.target.content.value = "";
return false;
},
"click #categ-list": function(event){
console.log('click');
}
});
Comment puis-je obtenir le data-id
valeur de l'attribut dans le gestionnaire d'événement?
EDIT: Ajouter plus de code
EDIT2:
console.log(event.target.categ)
de sortie:
<select id="categ-list" name="categ">
<option value="test" data-id="p5zKaEbEiRkQjCkGg">test</option>
<option value="test1" data-id="okPY6oyeXiFR7M3jd">test1</option>
</select>
- s'il vous plaît montrer l'ensemble de votre gestionnaire d'événement. Quel élément est l'événement à venir?
Vous devez vous connecter pour publier un commentaire.
Des éléments du DOM (
HTMLElement
objets) n'ont pas.data()
méthode..de données()
méthode appartient à jQuery objets. Si vous utilisez jQuery, vous devez envelopper l'élément avec jQuery constructeur puis utilisez le.data
méthode:Une autre option est d'utiliser
.dataset
propriété 1:Ou
.getAttribute()
méthode:mise à jour:
Vous devez également sélectionner l'option sélectionnée avant d'utiliser
dataset
propriété.1. IE10 et ci-dessous partiellement en charge la propriété. Android 2.3 ne peut pas lire
data-*
propriétés deselect
éléments.console.log(event.target.categ)
spectacle?select
élément lui-même n'a pasdata-id
de la propriété, vous devez sélectionner lesoption
avant d'utiliser la propriété.categ
pour le faire fonctionner.e.target.dataset.id
Tout d'abord:
Si vous souhaitez obtenir de l'élément sélectionné dans le météore, vous n'avez pas besoin de jQuery. Il suffit de prendre l'événement de changement et d'obtenir les données avec JavaScript:
Deuxièmement:
Pour obtenir les données de l'élément que vous devriez toujours utiliser
event.currentTarget.dataset
.En utilisant
event.target.dataset
vous obtiendrez le mauvais jeu de données dans certains cas.E. g.:
événement.cible vous donne l'élément sur lequel vous avez cliqué. Dans certains cas, cela peut être un enfant de l'élément que vous définissez le gestionnaire sur.
événement.currentTarget renvoie toujours l'élément que vous définissez le gestionnaire sur.
Voici l'exemple:
http://currenttarget.meteor.com/
Semble que vous essayez d'avoir le data-id de l'option actuellement sélectionnée, à essayer si vous êtes à l'aide de jquery: