AngularJS开发记事本小程序

这是源代码(github):git@github.com:Hughendman/notebook.git

这是HTML代码:

<!doctype html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>NoteBook</title>
		<link rel="stylesheet" href="css/base.css">
		<link rel="stylesheet" href="css/index.css">
		<script src="js/angular.min.js"></script>
	</head>
	<body ng-app="Todos">
		<section class="todoapp" ng-controller="TodosCtrl">
			<header class="header">
				<h1>NOTE</h1>
				<form ng-submit="add()">
					<input class="new-todo" ng-model="todo" placeholdder="You need to do something!!" autofocus>
				</form>
			</header>
			<section class="main">
				<input class="toggle-all" type="checkbox">
				<label for="toggle-all">Mark all as complete</label>
				<ul class="todo-list">
					<li ng-repeat="todo in todos" ng-class="{completed: todo.flag}">
						<div class="view">
							<input class="toggle" ng-click="toggle($index)" type="checkbox" ng-checked="todo.flag">
							<label>{{todo.text}}</label>
							<button class="destroy" ng-click="delete($index)"></button>
						</div>
						<input class="edit" value="Create a TodoMVC template">
					</li>
				</ul>
			</section>
			<footer class="footer">
				<span class="todo-count"><strong>{{length}}</strong> item left</span>
				<button class="clear-completed" ng-click="clear()">Clear completed</button>
			</footer>
		</section>
		<script>
			var Todos = angular.module('Todos', []);

			Todos.controller('TodosCtrl', ['$scope', function ($scope) {
				// 声明一个数组,用来存储待办事项
				$scope.todos = [
					{text: '写日记', flag: true},
					{text: '做饭', flag: false},
					{text: '洗脸', flag: true},
					{text: '刷牙', flag: true},
				];
				$scope.add = function () {
					// 向数组中添加数据
					$scope.todos.push({text: $scope.todo, flag: false});
					// 清空表单
					$scope.todo = '';
					$scope.length=$scope.count();
					
				};

				// 切换事项状态(完成/未完成)
				$scope.toggle = function (index) {
					// 改变数组中某单元的flag属性
					$scope.todos[index].flag = !$scope.todos[index].flag;
					$scope.length=$scope.count();
				};

				// 删除事项
				$scope.delete = function(index) {
					// 将数组中某单元删除
					$scope.todos.splice(index, 1);
					$scope.length=$scope.count();
					
				};
				$scope.clear = function (){
					for (var i=0 ;i< $scope.todos.length ; i++){
						if($scope.todos[i].flag==true){
							$scope.delete(i);
							$scope.clear();
						}

					}
				};
				$scope.count=function(){
					var count=0;
					for(var i=0;i<$scope.todos.length;i++){
						if($scope.todos[i].flag==false){
							count++;
						}
					}
					return count;
				}
				$scope.length=$scope.count();
			}]);

		</script>
	</body>
</html>

  这是base.css文件(注意,请用less)

hr {
	margin: 20px 0;
	border: 0;
	border-top: 1px dashed #c5c5c5;
	border-bottom: 1px dashed #f7f7f7;
}

.learn a {
	font-weight: normal;
	text-decoration: none;
	color: #b83f45;
}

.learn a:hover {
	text-decoration: underline;
	color: #787e7e;
}

.learn h3,
.learn h4,
.learn h5 {
	margin: 10px 0;
	font-weight: 500;
	line-height: 1.2;
	color: #000;
}

.learn h3 {
	font-size: 24px;
}

.learn h4 {
	font-size: 18px;
}

.learn h5 {
	margin-bottom: 0;
	font-size: 14px;
}

.learn ul {
	padding: 0;
	margin: 0 0 30px 25px;
}

.learn li {
	line-height: 20px;
}

.learn p {
	font-size: 15px;
	font-weight: 300;
	line-height: 1.3;
	margin-top: 0;
	margin-bottom: 0;
}

#issue-count {
	display: none;
}

.quote {
	border: none;
	margin: 20px 0 60px 0;
}

.quote p {
	font-style: italic;
}

.quote p:before {
	content: '“';
	font-size: 50px;
	opacity: .15;
	position: absolute;
	top: -20px;
	left: 3px;
}

.quote p:after {
	content: '”';
	font-size: 50px;
	opacity: .15;
	position: absolute;
	bottom: -42px;
	right: 3px;
}

.quote footer {
	position: absolute;
	bottom: -40px;
	right: 0;
}

.quote footer img {
	border-radius: 3px;
}

.quote footer a {
	margin-left: 5px;
	vertical-align: middle;
}

.speech-bubble {
	position: relative;
	padding: 10px;
	background: rgba(0, 0, 0, .04);
	border-radius: 5px;
}

.speech-bubble:after {
	content: '';
	position: absolute;
	top: 100%;
	right: 30px;
	border: 13px solid transparent;
	border-top-color: rgba(0, 0, 0, .04);
}

.learn-bar > .learn {
	position: absolute;
	 272px;
	top: 8px;
	left: -300px;
	padding: 10px;
	border-radius: 5px;
	background-color: rgba(255, 255, 255, .6);
	transition-property: left;
	transition-duration: 500ms;
}

@media (min- 899px) {
	.learn-bar {
		 auto;
		padding-left: 300px;
	}

	.learn-bar > .learn {
		left: 8px;
	}
}

  最后别忘记引入angular.min.js文件,以及初始化样式的index.css文件(网上有很多)。

原文地址:https://www.cnblogs.com/hughman/p/7028958.html