前端學習(1574):angular實現todolist3全選功能

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body ng-app="MyToDoMvc">
    <section class="todoapp" ng-controller="MainController">
        <header class="header">
            <h1>todos</h1>
            <form ng-submit='add()'>
                <input class="new-todo" placeholder="what needs to be done" ng-model="text" autofocus>
            </form>
        </header>
        <!-- <input class="new-todo" placeholder="what needs to be done" ng-model="text" autofocus> -->
        <section class="main">
            <input class="toggle-all" type="checkbox" ng-click="toggleAll()">
            <label for="toggle-all">Mark all as complete</label>
            <ul class="todo-list">
                <li ng-repeat="todo in todos" ng-class={completed:todo.completed,editing:todo.id===currentEditimgId} data-id="{{todo.id}}">
                    <div class="view">
                        <input class="toggle" type="checkbox" ng-model="todo.completed" ng-model="checkall">
                        <label ng-dblclick="editing(todo.id)">{{todo.text}}</label>
                        <button class="destroy" ng-click="remove(todo.id)">刪除</button>
                    </div>
                    <form ng-submit="save()">
                        <input type="edit" ng-model="todo.text">
                    </form>
                </li>
                <!--   <li>
                <div class="view">
                    <input class="toggle" type="checkbox">
                    <label>Buy a unicorn</label>
                    <button class="destroy"></button>
                </div>
                <input type="edit" value="Rule the web">
            </li> -->
            </ul>
        </section>

        <footer class="footer">
            <span class="todo-count"><strong>{{todos.length}}</strong>item left</span>
            <button class="clear-completed" ng-click="clear()" ng-show="existCompleted()">clear</button>
        </footer>

    </section>
    <script src="./node_modules/angular/angular.js"></script>
    <script src="./js/mvc.js"></script>
    <script>
    </script>
</body>

</html>

mvc.js

(function(angular) {
    'use strict';
    /* 應用程序主要的模塊 */
    var myApp = angular.module('MyToDoMvc', []);
    //註冊一個主要的控制器
    myApp.controller('MainController', ['$scope', function($scope) {
        //複雜的遞歸 保證id不重複
        function getId() {
            var id = Math.random();
            for (var i = 0; i < $scope.todos.length; i++) {
                if ($scope.todos[i].id === id) {
                    id = getId();
                    break;
                }
            }
            return id;
        }
        //文本框模型
        $scope.text = '';
        //任務列表模型{id 1.text '學習' completed:trur}
        $scope.todos = [{
                id: 1,
                text: '學習',
                completed: false,
                editing: false
            },
            {
                id: 2,
                text: '睡覺',
                completed: false,
                editing: false
            },
            {
                id: 3,
                text: '打豆豆',
                completed: true,
                editing: false
            }
        ];
        //添加元素
        $scope.add = function() {
                if (!$scope.text) {
                    return;
                }
                $scope.todos.push({
                    id: $scope.todos.length + 1,
                    text: $scope.text,
                    completed: false
                });
                //清空文本數據
                $scope.text = '';
            }
            //處理刪除
        $scope.remove = function(id) {
            //刪除誰
            //尋找
            for (var i = 0; i < $scope.todos.length; i++) {
                if ($scope.todos[i].id === id) {
                    $scope.todos.splice(i, 1);

                    break;
                }
                /* if (1 === a) {

                } */
            }
            //$scope.todos
        }
        $scope.clear = function() {
                var result = [];
                for (var i = 0; i < $scope.todos.length; i++) {
                    if (!$scope.todos[i].completed) {
                        result.push($scope.todos[i]);

                    }
                    /* if (1 === a) {

                    } */
                }
                $scope.todos = result;
            }
            //是否已經由完成的
        $scope.existCompleted = function() {
                //該函數一定要有返回值    
                for (var i = 0; i < $scope.todos.length; i++) {
                    if ($scope.todos[i].completed) {
                        return true;

                    }
                    /* if (1 === a) {

                    } */
                }
                return false;
            }
            //當前編輯哪個元素
        $scope.currentEditimgId = -1;
        $scope.editing = function(id) {
            $scope.currentEditimgId = id;
        }
        $scope.save = function(id) {
                $scope.currentEditimgId = -1;
            }
            /*  $scope.checkall = false;
             $scope.$watch('checkall', function(now, old) {
                 for (var i = 0; i < $scope.todos.length; i++) {
                     $scope.todos[i].completed = now;
                     /* if (1 === a) {

                     } 
                 }
             }) */
        var now = false;
        $scope.toggleAll = function() {
            for (var i = 0; i < $scope.todos.length; i++) {
                $scope.todos[i].completed = now;

            }
            now = !now;
        }
    }])
})(angular);

運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章