AngularJS radio單選按鈕
阿新 • • 發佈:2019-01-02
今天在看angularJS的API時,看到一個例項。
在頁面上有幾個專案名稱,每個名稱前面都有一個checkbox,如果打上勾,則表示這個專案已經完成,如果沒有打鉤,則表示未完成。
然後在下方設定一個輸入框,用來輸入新增加專案的名稱,再下邊是兩個radio按鈕,只能選擇一個,用來選擇新增肌的專案的完成情況。最後是一個提交按鈕,表示新增一個新的專案。
這是截圖。
下面來看看angularJS的程式碼。
<!DOCTYPE html>
<html ng-app="todolist">
<head lang="en">
<meta charset ="UTF-8">
<title></title>
<script src="lib/angular.js"></script>
</head>
<body>
<div ng-controller="TodolistController">
<ul>
<!--迴圈遍歷作用域下的items,即($scope.items),並重復克隆這個HTML元素li-->
<li ng-repeat="item in items">
<!--當checkbox繫結的值為true時,頁面中會打上對勾-->
<input type="checkbox" ng-model="item.finished"><span ng-bind="item.name"></span>
</li>
</ul>
<hr>
<!--繫結作用域物件的一個數據模型name,這個那麼變數隨時獲取輸入框輸入的內容-->
Name:<input type="text" ng-model="name">
<p></p>
<label >
<!--
有兩個radio標籤,必須有相同的name才能實現二選一的效果
通過ng-value裡不同的值,實現選擇不同radio有不同值。然後兩個radio又繫結著相同的資料模型,這樣就可以實現當選擇不同的radio時,繫結的資料模型變數會有不同的值。
-->
<input type="radio" ng-value=true ng-model="state" name="selectState">finished
</label>
<label>
<input type="radio" ng-value=false ng-model="state" name="selectState">unfinished
</label>
<!--這裡是把這個資料模型顯示出來,為了測試其值是否正確。可以省略掉-->
<p>{{state}}</p>
<!--當點選按後,執行一個函式-->
<button type="button" ng-click="addItem()">Add a new item</button>
</div>
<script>
//先預定義幾個專案的名稱和完成的狀態。
var items = [
{name: 'Javascipt', finished: true},
{name: 'AngularJS', finished: true},
{name: 'NodeJS', finished: false},
{name: 'MongoDB', finished: false}
];
//註冊一個模組
var todolistModule = angular.module('todolist', []);
//註冊一個控制器
todolistModule.controller('TodolistController', ['$scope', function ($scope) {
//把外圍的是物件陣列的引用傳遞給模組作用域的資料模型items中
$scope.items = items;
//把輸入框的內容初始化為空
$scope.name = '';
//給作用域新增函式方法
$scope.addItem = function () {
//因為將來要插入的都是物件,所以先定義一個空的物件
var newItem = {};
//分別把DOM中繫結的值賦給這個新定義物件的兩個屬性
newItem.name = $scope.name;
newItem.finished = $scope.state;
//在陣列的末尾追加物件元素
items.push(newItem);
};
}]);
</script>
</body>
</html>