Polka King. CSS
Ensuite, nous pouvons définir la façon dont nous voulons utiliser notre code court et lamp;rsquoutiliser comme guide pour le traitement réel du Code court. Voici ce que jamp;rsquoaimerais pouvoir taper dans lamp;rsquoéditeur pour générer un nouveau sondage (ajout damp;rsquoune nouvelle ligne pour la lisibilité): [pollka question =
La première chose que nous devons faire est de désinfecter lamp;rsquoattribut ID afin quamp;rsquoil puisse être utilisé comme attribut HTML ou clé lors de lamp;rsquoenregistrement de lamp;rsquoenquête dans la base de données: $id = sanitize _ title with Dash ($ATTS [amp;lsquoidamp;rsquo, », », Save amp;lsquo) Ensuite, nous allons convertir tous ces attributs Answer n en un tableau afin quamp;rsquoils soient plus faciles à répéter: $Answers = [] Foreach ($key = amp;gt $VAL) {if (Str Str Str ($Key, amp;lsquoAnswer -amp;lsquo) {$Answers [Str _ replace (amp;lsquoAnswer -amp;lsquo, amp;lsquo, $key)] = $Val} Enfin, nous voulons passer toutes ces données avec Javascript. Nous voulons nous assurer quamp;rsquoil y a plus damp;rsquoune enquête sur une page afin que nous ne puissions pas générer une seule balise de script pour remplir ces données dans une variable. Au lieu de cela, nous créerons un élément HTML
Nous ajouterons ces données comme attributs, que nous accéderons plus tard du côté JS.
Premièrement, nous créons un objet json qui peut insérer des attributs HTML: $vue _ ATTS = ESC ATTR (Code json Code ([amp;lsquoidamp;rsquo = amp;gt ID $, amp;lsquoquestionamp;rsquo = amp;gt ATTS [amp;lsquoquestionamp;rsquo], amp;lsquoAnswersamp;rsquo = amp;gt Answers,]) Ensuite, nous mettrons à jour la méthode pour générer une DIV et utiliserons ces données supplémentaires comme propriété: retourner
Var element = document. Queryselectorall (« [Data Primary Key to] ») Cela nous donnera une liste de noeuds JavaScript qui ressemblent beaucoup à un tableau de namp;rsquoimporte quel élément DIV qui contient lamp;rsquoattribut PK ATTS des données. Comme nous voulons pouvoir voir plusieurs enquêtes sur la même page, nous pouvons simplement faire défiler la liste des noeuds et effectuer toute magie basée sur la vue qui apparaît sur chaque noeud. Nous créons une boucle et extrayons json de lamp;rsquoattribut Data PK ATTS et lamp;rsquoanalysons pour lamp;rsquoutiliser comme objet javascript: element. Foreach (Function (element) {var ATTS = json.parse (element.getat)
Attribut (
La prochaine chose que nous devons faire pour convertir les DIV créés par notre code court en enquêtes est de créer des instances de vue, pas chaque instance, et de rendre lamp;rsquoobjet ATTS disponible dans lamp;rsquoInstance vue. Cela peut sembler parler de beaucoup damp;rsquoinstances objets, mais en fait cela devrait être très simple. Regardons les éléments. Foreach (Function (element) {var ATTS = json.parse (element.getattribute (amp;lsquoData PK ATTSamp;rsquo) to this element and Itsamp;rsquo ATTSamp;rsquo var VM = new vue ({el: element, created: function ({this.atts = ATTS}})) Ici, nous créerons une nouvelle instance vue qui vivra dans lamp;rsquoélément courant. Nous ajoutons également des objets ATTS à lamp;rsquoInstance courante en utilisant la méthode du cycle de vie créée par vue. Nous pouvons également le faire en utilisant lamp;rsquoobjet donné de vue, mais cette information namp;rsquoa pas besoin damp;rsquoêtre réactive, et je veux faire une distinction claire entre les attributs statiques et réactifs dans le Code.
Ensuite, nous devons fournir à vue quelque chose pour remplacer le DIV substituant. Maintenant, il suffit damp;rsquoajouter une nouvelle DIV avec une classe. Conteneur PK, Nous afficherons le problème pour nous assurer que tout va bien. Depuis
Nous essayons de simplifier les choses en ajoutant simplement un attribut Template à un nouvel objet vue et en le remplissant de modèles basés sur des chaînes: var VM = new vue ({el: element, created: function () {this.atts = ATTS}, Modèle: »
[Questions relatives aux annexes] amp;lsquo } ) tout se passe bien, nous devrions voir nos questions partout où nous ajoutons ce code Court:
Au lieu damp;rsquoeffectuer toutes les opérations dans lamp;rsquoinstance principale de vue, il est logique de les diviser en composants plus petits: lamp;rsquoun pour voir lamp;rsquoenquête et lamp;rsquoautre pour voir les résultats. Nous commencerons par lamp;rsquoenquête et créerons un nouveau composant vue, que nous appelons PK Poll, qui acceptera un attribut, lamp;rsquoobjet ATTS. Nous avons supprimé le substituant actuel {atts.question} et Ajoutons maintenant le composant que voulez créer au modèle. Modèle: »
amp;lsquo, Comme nous namp;rsquoutilisons aucun outil de compilation fantaisiste, nous pouvons simplement lamp;rsquoajouter au fichier pollka King. JS, la seule chose spéciale que nous devons faire est de nous assurer que le composant est défini avant de lamp;rsquoutiliser, donc je vais lamp;rsquoajouter au début du fichier avant de créer lamp;rsquoInstance vue sur lamp;rsquoélément:
Var pkpoll = vue. Composant (amp;lsquoPK Pollamp;rsquo, {props: [amp;lsquoATTSamp;rsquo, data: function () {renvoie {Selected Answer: NULL,}},}) Comme pouvez le voir, nous avons encore une façon très simple de créer notre composant de sondage PK, damp;rsquoaccepter prop ATTS, et de définir un attribut de données passives appelé selectedanswer que nous utiliserons pour suivre les réponses sélectionnées par lamp;rsquoutilisateur. Nous devons ensuite créer un modèle pour ce composant, comme nous lamp;rsquoavons fait pour lamp;rsquoinstance principale de vue: le modèle: »
[Questions relatives aux annexes]
[réponse]
Présentation
amp;lsquo, Ce modèle nous fournira une DIV damp;emballage, classifier PK Poll, afficher le problème dans H2, puis générer lamp;rsquoentrée
Radio pour chaque application utilisant la commande V for. Nous avons également ajouté un bouton qui définit la directive @ click (abréviation de V on: Click) pour appeler la méthode submitpoll (), que nous allons maintenant créer en ajoutant un objet Methods et sa fonction submitpoll au composant: Méthode: {submit Poll: function () {if (NULL = = this.selected answer) return if no answer is selected, var querystring = amp;lsquo? Action = PK _ submit Poll amp;amp id =amp;rsquo + this.atts.id + amp;lsquoamp;amp answer =amp;rsquo + this.selected answer Fetch (window.ajaxurl + querystring)}} Ici, nous vérifions simplement si la réponse a été sélectionnée. Dans ce cas, nous utilisons Fetch pour exécuter la requête WordPress ajaxurl get (WP admin admin ajax.php) et passer un nom d’action PK _ submit Poll qui aidera WordPress à traiter notre requête et à rechercher l’id et la réponse sélectionnée par l’utilisateur. Retour à notre fichier PHP plug in, nous pouvons gérer cette requête en ajoutant ce qui suit à la méthode damp;rsquoenregistrement: Add _ action (amp;lsquoWP Ajax nopriv PK submit Pollamp;rsquo, [$this, amp;lsquosubmit Pollamp;rsquo]) Cela fait que la méthode submit _ Poll de notre classe traite les requêtes avec une opération PK submit Poll, Cette méthode est ensuite ajoutée à: public function submit _ Poll () {$$$id = sanitize title with Function submit Poll () {$$$id = sanitize title with Dash ($Get [amp;lsquoID],amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo, Saveamp;rsquo) $answer = sanitize text field ($$Get [amp;lsquoanswer]) $option name =amp;rsquo Polka Polla Polla Poll. $$ID $$option value = get [amp;lsquoID],amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo,amp;rsquo amp;lsquo, Saveamp;rsquo) $answer = sanitize text text t _ option ($option name, []) $answer count = ISST ($option value [$answer])? $option value [$answer] 0 $option value [$answer] = $answer _ count + 1 Mise à jour _ option ($option name, $option value) Exit (amp;lsquosuccessamp;rsquo) Tout ce que nous faisons ici est damp;rsquoeffectuer un nettoyage minimal des données envoyées par $_ get, de sélectionner lamp;rsquooption appropriée (si elle existe) dans la base de données ou de créer une autre option, puis damp;rsquoaugmenter le nombre de fois que sélectionnez re
Résultat [clé] = 0}. BIND (this))}, nous pouvons maintenant créer des méthodes pour nous aider à utiliser ces données dans notre modèle: Nous pourrions vouloir afficher les résultats à lamp;rsquoéchelle 11 27, mais nous aimerions aussi avoir une vue à barres, donc « Je vais également créer une méthode pour obtenir les résultats en pourcentage que nous pouvons utiliser dans CSS. Méthode: {getanswerratio (Key) {var total = object.values (this.results). Reduce (Function (ACC, cur) {return ACC + cur}, 0) Var count = parseint (this.results [Key], 10) | | 0 Renvoie le nombre + amp;lsquoamp;rsquo + total}, Getanswerstyle (Key) {var total = object.values (this.results). Reduce (Function (ACC, cur) {return ACC + cur}, 0) Var count = parseint (this.results [Key], 10) | | 0 Pourcentage de var = (nombre total) * 100 Renvoie
Utilisez JavaScript dans un seul composant de fichier. êtes intéressé par faites nous savoir dans les commentaires quels sujets aimeriez voir. Quel est votre cadre JavaScript préféré lors de la création de l’interface utilisateur du plugin wordpress Delicious Brains 12 juillet 2018