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

Liaison de données bidirectionnelle des notes d'étude AngularJS

高洛峰
Libérer: 2016-12-24 10:07:26
original
1397 Les gens l'ont consulté

Cette fois, nous expliquerons en détail la liaison de données bidirectionnelle d'Angular.

1. Exemple simple

Nous avons déjà montré cet exemple dans la première section Pour le voir, déplacez-vous ici

L'effet obtenu ici est celui dans la zone de saisie Entrée. le contenu, et le contenu correspondant sera modifié en conséquence. Cela permet d'obtenir une liaison bidirectionnelle des données.

2. Utilisation d'expressions de valeur et ng-bind

Regardons un autre exemple, cliquez ici Dans le premier exemple qui apparaît dans l'article, {{greeting.text}} et {. {text}} est une expression de valeur, mais si vous continuez à actualiser la page, vous rencontrerez un problème, c'est-à-dire que la page apparaîtra parfois "{{greeting.text}} {{text}}" "Cette chaîne, comment devrions-nous le résoudre?

La commande ng-bind est utilisée ici : utilisée pour lier des expressions de données.

Par exemple, on peut changer

<p>{{greeting.text}} {{text}}</p>
Copier après la connexion


par :

"<p><span ng-bind="greeting.text"></span><span ng-bind="text"></span></p>";
Copier après la connexion


Après cette correction, la chaîne indésirable n'apparaîtra pas lors du rafraîchissement de la page.

Cependant, utiliser des commandes est toujours moins efficace que d'utiliser des expressions directement, nous avons donc résumé une règle commune : de manière générale, utilisez ng-bind pour l'index et utilisez '{{}}' dans les modèles suivants. .

3. Scénario typique de liaison bidirectionnelle - formulaire

Regardons d'abord le contenu de form.html :

<!doctype html>
<html ng-app="UserInfoModule">
 
<head>
 <meta charset="utf-8">
 <link rel="stylesheet" href="css/bootstrap-3.0.0/css/bootstrap.css">
 <script src="js/angular-1.3.0.js"></script>
 <script src="Form.js"></script>
</head>
 
<body>
 <p class="panel panel-primary">
  <p class="panel-heading">
   <p class="panel-title">双向数据绑定</p>
  </p>
  <p class="panel-body">
   <p class="row">
    <p class="col-md-12">
     <form class="form-horizontal" role="form" ng-controller="UserInfoCtrl">
      <p class="form-group">
       <label class="col-md-2 control-label">
        邮箱:
       </label>
       <p class="col-md-10">
        <input type="email" class="form-control" placeholder="推荐使用126邮箱" ng-model="userInfo.email">
       </p>
      </p>
      <p class="form-group">
       <label class="col-md-2 control-label">
        密码:
       </label>
       <p class="col-md-10">
        <input type="password" class="form-control" placeholder="只能是数字、字母、下划线" ng-model="userInfo.password">
       </p>
      </p>
      <p class="form-group">
       <p class="col-md-offset-2 col-md-10">
        <p class="checkbox">
         <label>
          <input type="checkbox" ng-model="userInfo.autoLogin">自动登录
         </label>
        </p>
       </p>
      </p>
      <p class="form-group">
       <p class="col-md-offset-2 col-md-10">
        <button class="btn btn-default" ng-click="getFormData()">获取Form表单的值</button>
        <button class="btn btn-default" ng-click="setFormData()">设置Form表单的值</button>
        <button class="btn btn-default" ng-click="resetForm()">重置表单</button>
       </p>
      </p>
     </form>
    </p>
   </p>
  </p>
 </p>
</body>
 
</html>
Copier après la connexion


Regardez le contenu de Form.js :

var userInfoModule = angular.module(&#39;UserInfoModule&#39;, []);
userInfoModule.controller(&#39;UserInfoCtrl&#39;, [&#39;$scope&#39;,
 function($scope) {
  $scope.userInfo = {
   email: "253445528@qq.com",
   password: "253445528",
   autoLogin: true
  };
  $scope.getFormData = function() {
   console.log($scope.userInfo);
  };
  $scope.setFormData = function() {
   $scope.userInfo = {
    email: &#39;testtest@126.com&#39;,
    password: &#39;testtest&#39;,
    autoLogin: false
   }
  };
  $scope.resetForm = function() {
   $scope.userInfo = {
    email: "253445528@qq.com",
    password: "253445528",
    autoLogin: true
   };
  }
 }
])
Copier après la connexion

La fonction implémentée dans l'image ci-dessus est :

1. Cliquez sur "Obtenir" pour afficher trois données sur la console, email, mot de passe et statut sélectionné (vrai, faux)

2. Cliquez sur "Paramètres" : vous pouvez modifier les valeurs des deux cases de saisie et l'état non coché de la case à cocher ;

3. Cliquez sur « Réinitialiser » : vous pouvez restaurer les données aux données d'origine.

Étant donné que le modèle ng dans la zone de saisie et la valeur dans le contrôleur implémentent une liaison bidirectionnelle, modifier la valeur de la zone de saisie ou modifier la valeur dans le contrôleur modifiera les valeurs des deux parties. par conséquent. Quelques lignes de code seulement peuvent réaliser une fonction aussi puissante. Ne trouvez-vous pas que c'est incroyable ? C’est effectivement incroyable, mais ce qui est encore plus étonnant est à venir ! Poursuivre!

4. Changer dynamiquement les styles d'étiquettes

Regardez d'abord le contenu de color.html :

<!doctype html>
<html ng-app="MyCSSModule">
 
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="CSS1.css">
</head>
<style type="text/css">
  .text-red {
    background-color: #ff0000;
  }
  .text-green {
    background-color: #00ff00;
  }
</style>
 
<body>
  <p ng-controller="CSSCtrl">
    <p class="text-{{color}}">测试CSS样式</p>
    <button class="btn btn-default" ng-click="setGreen()">绿色</button>
  </p>
</body>
<script src="js/angular-1.3.0.js"></script>
<script src="color.js"></script>
 
</html>
Copier après la connexion


Regardons la ligne 19 : Il y a une variable "color" dans la balise p Lorsque l'on clique sur "green", la fonction setGreen est exécutée et la valeur de "color" est changée en "green", donc le nom de la classe. est modifié, donc la couleur d'arrière-plan a été modifiée. En utilisant cette méthode, nous n'avons pas besoin de manipuler directement les éléments, mais simplement d'ajouter une variable. Le code est concis et intuitif.

Regardons à nouveau le contenu de color.js :

var myCSSModule = angular.module(&#39;MyCSSModule&#39;, []);
myCSSModule.controller(&#39;CSSCtrl&#39;, [&#39;$scope&#39;,
  function($scope) {
    $scope.color = "red";
    $scope.setGreen = function() {
      $scope.color = "green";
    }
  }
])
Copier après la connexion


La valeur par défaut de l'attribut " color" est "rouge" », il affiche donc du rouge, et lorsque vous cliquez dessus, la fonction est exécutée et devient verte.

Pour plus de notes d'étude sur Angularjs et d'articles sur la liaison de données bidirectionnelle, veuillez prêter attention au site Web PHP 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!