首頁 >web前端 >js教程 >使用AngularJS處理單選框和複選框的簡單方法_AngularJS

使用AngularJS處理單選框和複選框的簡單方法_AngularJS

WBOY
WBOY原創
2016-05-16 15:53:521198瀏覽

AngularJS對表單的處理相當簡單。在AngularJS使用雙向資料綁定方式進行表單驗證的時候,實質上它在幫我們進行表單處理。

使用複選框的例子很多,同時我們對它們的處理方式也有很多。這篇文章中我們將看一看把複選框和單選按鈕同資料變數綁定的方法和我們對它的處理方法。

建立Angular表單

在這篇文章裡,我們需要兩個檔案:index.html和app.js。 app.js用來保存所有的Angular程式碼(它不大),而index.html是動作運作的地方。首先我們創建AngularJS檔案。
 

// app.js
 
var formApp = angular.module('formApp', [])
 
  .controller('formController', function($scope) {
  
    // we will store our form data in this object
    $scope.formData = {};
     
  });

在這個文件裡,我們所做的就是創建Angular應用程式。其中我們也建立了一個控制器和一個用來保存所有表單資料的物件。

下面我們看看index.html文件,在這個文件裡,我們建立了表單,然後進行了資料綁定。我們使用了Bootstrap快速地對頁面進行佈局。
 

<-- index.html -->
<!DOCTYPE html>
<html>
<head>
 
  <!-- CSS -->
  <!-- load up bootstrap and add some spacing -->
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
  <style>
    body     { padding-top:50px; }
    form      { margin-bottom:50px; }
  </style>
 
  <!-- JS -->
  <!-- load up angular and our custom script -->
  <script src="http://code.angularjs.org/1.2.13/angular.js"></script>
  <script src="app.js"></script>
</head>
 
<!-- apply our angular app and controller -->
<body ng-app="formApp" ng-controller="formController">
<div class="col-xs-12 col-sm-10 col-sm-offset-1">
 
  <h2>Angular Checkboxes and Radio Buttons</h2>
 
  <form>
   
    <!-- NAME INPUT -->
    <div class="form-group">
      <label>Name</label>
      <input type="text" class="form-control" name="name" ng-model="formData.name">
    </div>
     
    <!-- =============================================== -->
    <!-- ALL OUR CHECKBOXES AND RADIO BOXES WILL GO HERE -->
    <!-- =============================================== -->
     
    <!-- SUBMIT BUTTON (DOESNT DO ANYTHING) -->
    <button type="submit" class="btn btn-danger btn-lg">Send Away!</button>
     
  </form>
   
  <!-- SHOW OFF OUR FORMDATA OBJECT -->
  <h2>Sample Form Object</h2>
  <pre class="brush:php;toolbar:false">
    {{ formData }}
  

創建完成之後,我們就有了具有name輸入的表單了。如果一切都按照我們設想的運行,那麼如果你在name輸入中鍵入內容,那麼你應當可在下面的

標籤段看到所輸入的內容了.<br>
 <br>
<strong>複選框</strong>
<p>在表單裡,複選框非常普遍。下面我們將看看Angular是怎麼使用ngModel實作資料綁定的。如果有許多複選框,那麼有時在把它綁定到物件的時候如何進行資料處理會讓人不知所措。 </p>
<p>在我們所建立的formData物件的內部,我們也建立了另一個物件。我們稱它為favoriteColors,它請求使用者選擇最喜歡的顏色:<br>
 <br>
</p>
<div class="jb51code">
<pre class="brush:js;">
<!-- MULTIPLE CHECKBOXES -->
<label>Favorite Colors</label>
<div class="form-group">
  <label class="checkbox-inline">
    <input type="checkbox" name="favoriteColors" ng-model="formData.favoriteColors.red"> Red
  </label>
  <label class="checkbox-inline">
    <input type="checkbox" name="favoriteColors" ng-model="formData.favoriteColors.blue"> Blue
  </label>
  <label class="checkbox-inline">
    <input type="checkbox" name="favoriteColors" ng-model="formData.favoriteColors.green"> Green
  </label>
</div>

當使用者點擊上方複選框中的任一個時,他們立刻看到formData物件發生了變更。我們把複選框的值儲存到fromData.favoriteColors物件裡。這樣我們就把複選框的值傳給了伺服器了。

複選框點選處理

有時候,當某人點擊了複選框後,你需要對其進行處理。你需要做的處理可能如下:計算某個值,更改某些變數或進行資料綁定。要實作這些,你要使用$scope.yourFunction = function() {};在app.js內建立函數。接著你就可以在的的複選框上使用ng-click="yourFunction()"來呼叫這個函數了。

處理表單複選框的方法有許多種,Angular提供了一個非常簡單的方法:使用ng-click呼叫使用者自訂的函數。

自訂複選框對應的值

預設情況下,綁定到複選框上的值是ture或false。有時候,我們希望傳回的其它值。 Angular提供了一個非常好的處理方式:使用ng-ture-value和ng-false-value。

我們加入另外一組複選框,不過這時侯我們使用的不再是true或false,而是使用者自訂的值。
 

<!-- CUSTOM VALUE CHECKBOXES -->
<label>Personal Question</label>
<div class="checkbox">
  <label>
    <input type="checkbox" name="awesome" ng-model="formData.awesome" ng-true-value="ofCourse" ng-false-value="iWish">
    Are you awesome&#63;
  </label>
</div>

另外,現在我們還在formData物件裡增加了一個awesome變數。如果此時設定這個值為true,那麼傳回的值應該是ofCourse,如果設定為false,那麼傳回的值為iWish。

複選框

依據 官方說明文件, 這是和單選框不同之處:
 

<input type="radio"
  ng-model="string"
  value="string"
  [name="string"]
  [ng-change="string"]
  ng-value="string">

需要了解更多有關複選框的信息,請關注Angular 複選框說明文檔.
單選按鈕

單選按鈕比複選框容易些,就在於無需存儲多選項數據. 單選就是一個值. 下面添加一個單選按鈕看看.
 

<!-- RADIO BUTTONS -->
<label>Chicken or the Egg&#63;</label>
<div class="form-group">
  <div class="radio">
    <label>
      <input type="radio" name="chickenEgg" value="chicken" ng-model="formData.chickenEgg">
      Chicken
    </label>
  </div>
  <div class="radio">
    <label>
      <input type="radio" name="chickenEgg" value="egg" ng-model="formData.chickenEgg">
      Egg
    </label>
  </div>
</div>

就像這樣,單選按鈕就綁定到資料物件了.

單選按鈕用法

根據 官方文件, 這是提供的選項:
 

<input type="radio"
    ng-model="string"
    value="string"
    [name="string"]
    [ng-change="string"]
    ng-value="string">

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:JQuery實現的圖文自動輪播效果外掛_jquery下一篇:JQuery實現的圖文自動輪播效果外掛_jquery

相關文章

看更多