Maison > interface Web > js tutoriel > le corps du texte

Comment implémenter la liaison de données bidirectionnelle dans js

一个新手
Libérer: 2017-10-11 10:28:13
original
2211 Les gens l'ont consulté


Exigences

Quels sont les cadres actuels qui se concentrent sur la liaison unidirectionnelle et qu'est-ce que la liaison bidirectionnelle ?
- Liaison de données unidirectionnelle : cela signifie que nous écrivons d'abord le modèle, puis intégrons le modèle et les données (les données peuvent provenir de l'arrière-plan) pour former du code HTML, puis insérons ce code HTML dans le flux de documents.
- Liaison de données bidirectionnelle : Liaison bidirectionnelle entre le modèle de données (Module) et la vue (View). Autrement dit, peu importe si je modifie les données pertinentes du modèle de données ou les données de la vue, les données correspondantes seront mises à jour en conséquence.

Principe de mise en œuvre

L'essentiel est la liaison des événements.
- Sur la couche de vue (View), vous pouvez lier l'événement keyup pour mettre à jour le modèle de données
- Utilisez la méthode Object.defineProperty() sur le modèle de données pour définir la méthode set de l'objet. le paramètre de propriété de l'objet est déclenché, modifiez également les données dans la couche de vue.

Code de cas

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>Title</title></head><body><input type="text" id="myinput" ><script>
    var input = document.getElementById("myinput");    
    var obj = {};    
    Object.defineProperty(obj, "input", {
        get: function () {
            return input.value;
        },
        set: function (val) {
            input.value = val;
            changeCallback(input.value);
        }
    });

    input.onkeyup = function () {
        obj.input = input.value;
    };    function changeCallback(val) {
        console.log("这里是不管view层,还是module层修改后的回调,最后设置的值是"+val);
    }</script></body></html>
Copier après la connexion

Idée

  • Tout d'abord, nous utilisons la méthode Object.defineProperty() pour définir la méthode set d'obj Just. modifier obj L'attribut input déclenchera la méthode set, puis déclenchera le rappel, qui réalise la liaison de données de la couche module.

  • Ensuite, liez l'événement keyup à l'entrée pour réaliser la liaison de la couche de vue.

  • Tant qu'il y a une modification entre les deux, quelle que soit la valeur d'input ou l'attribut d'entrée d'obj, la dernière valeur modifiée sera obtenue.

  • Cela devrait être l’idée la plus simple.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!