javascript - 如何在 angularjs 中隐藏和显示 HTML 元素?

标签 javascript jquery html angularjs

我有一些任务表,在那个表中每一行都有一个任务。 在每一行中都有一个状态,它是一个按钮的 Controller 。每个任务的初始状态将显示为进行中,按钮的文本显示为标记完成,但是当单击按钮时,任务的状态将更改为< strong>Done 并将按钮的文本更改为 Mark In Progress。如果将来如果我们想更改“完成”任务的状态,那么我们可以通过“标记进行中”按钮更改状态。

Please see the live DEMO

在这个现场演示中,

Index.html

<!DOCTYPE html>
<html>

<head>
<title>ToDo API Client Demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>

</head>

<body ng-app="myApp" ng-controller="tasksCtrl">
  <div class="navbar">
        <div class="navbar-inner">
            <a class="brand" href="#">ToDo API Client Demo</a>
        </div>
  </div>
  <div>

         <table class="table table-striped">
             <tr><td style="width: 1px;"></td><td><b>Task</b></td><td><b>Options</b></td></tr>
            <tr ng-repeat="task in tasks">
                <td>
                    <span data-bind="visible: done" class="label label-success">Done</span>
                    <span data-bind="visible: !done()" class="label label-important">In Progress</span>
                </td>
            <td>{{task.title}}</td>
            <td>{{task.description}}</td>
                        <td>  <a class="btn" data-toggle="modal" data-target="#modal" ng-click="editTask(task)">Edit</a></td>
                <td>  <a class="btn" data-toggle="modal" data-ng-click="removeRow(task)">Delete</a></td>

                <td>
                    <span data-bind="visible: done">
                          <button data-bind="click: $parent.markInProgress" class="btn">Mark In Progress</button>
                    </span>
                </td>
                        <td>
                     <span data-bind="visible: !done()">
                          <button data-bind="click: $parent.markDone" class="btn">Mark Done</button>
                     </span>
                </td>
            </tr>
         </table>

            <a class="btn" data-toggle="modal" data-target="#add" ng-click="editTask(task)">Add Task</a>
  </div>
  <div id="modal" role="dialog" class="modal hide fade">
        <div>
            <div class="modal-header">
                Task Dialog
            </div>
            <div class="modal-body">
                <label for="txtName"></label> 
                <input type="text"  ng-model="selectedTask.title" />
                <input type="text"  ng-model="selectedTask.description" />
            </div>
            <div class="modal-footer">
                <button class="btn btn-primary" ng-click="saveTask()" data-dismiss="modal">OK</button>
            </div>
        </div>
   </div>

   <div id="add" class="modal hide fade" tabindex="=1" role="dialog" aria-labelledby="addDialogLabel" aria-hidden="true">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
            <h3 id="addDialogLabel">Add Task</h3>
        </div>
        <div class="modal-body">
            <form class="form-horizontal">
                <div class="control-group">
                    <label class="control-label" for="inputTask">Task</label>
                    <div class="controls">
                        <input type="text" id="inputTask" ng-model="task1" placeholder="Task title" style="width: 150px;"><br />
                    </div>
                </div>
                <div class="control-group">
                    <label class="control-label" for="inputDescription">Description</label>
                    <div class="controls">
                        <input type="text" id="inputDescription" ng-model="description1" placeholder="Description" style="width: 300px;">
                    </div>
                </div>
            </form>
        </div>
        <div class="modal-footer"> 
            <button class="btn btn-primary" ng-click="addNewTask()" data-dismiss="modal">Add Task</button>

            <button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
        </div>
    </div>


   <script>
    var app = angular.module('myApp', []);
    app.controller('tasksCtrl', function($scope, $http) {
        //$http.get("data.json")
        $http.get("/todo/api/v1.0/tasks")
        .success(function(response) {
          console.log(response.tasks)
          $scope.tasks = response.tasks;
        });

        $scope.editTask=function(task) {
            $scope.selectedTask = task;
        };
        $scope.removeRow = function (task) {
            $scope.tasks.splice(task, 1);
        };
        $scope.addNewTask=function(){
            //$scope.tasks.push({title :$scope.task1,description: $scope.description1});
            $scope.tasks.push({title : $scope.task1, description : $scope.description1});
            $scope.task1='';
            $scope.description1='';
           //   $scope.tasks.push('dhsh');
        };
    });
    /*
    app.controller('addNewTaskCtrl', ['$scope', function($scope){
        $scope.addNewTask=function(){
            var task;
        }
    }]);*/

  </script>
</body>

</html>

最佳答案

尝试使用 ng-showng-hide 指令。

这是 Plunkr .

例如

<table class="table table-striped">
    <tbody>
        <tr>
            <td style="width: 1px;"></td>
            <td>
                <b>Task</b>
            </td>
            <td>
                <b>Options</b>
            </td>
        </tr>
        <tr ng-repeat="task in tasks">
            <td>
                <span ng-show="done" class="label label-success">Done</span>
                <span ng-hide="done" class="label label-important">In Progress</span>
            </td>
            <td>{{task.title}}</td>
            <td>{{task.description}}</td>
            <td>
                <a class="btn" data-toggle="modal" data-target="#modal" ng-click="editTask(task)">Edit</a>
            </td>
            <td>
                <a class="btn" data-toggle="modal" data-ng-click="removeRow(task)">Delete</a>
            </td>
            <td ng-show="done">
                <span>
                    <button ng-click="done = !done" class="btn">Mark In Progress</button>
                </span>
            </td>
            <td ng-hide="done">
                <span>
                    <button ng-click="done = !done" class="btn">Mark Done</button>
                </span>
            </td>
        </tr>
    </tbody>
</table>

希望对您有所帮助。

关于javascript - 如何在 angularjs 中隐藏和显示 HTML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31198054/

相关文章:

javascript - 如何将现有的 Angular 2 应用程序链接到 Nodejs 服务器?

javascript - 放大和缩小时间线时如何在时间线 Vis.js 上设置新选项?

javascript - 在圆形范围 slider 中,如何更改已更改路径的背景颜色?

javascript - 在 iframe 中调用父页面 JavaScript 函数

javascript - 使用 Jquery 检查时通过复选框更改背景颜色

html - Internet Explorer 9 - Magento 目录布局问题

javascript - 如何将弹出窗口附加到页面

javascript - 如何将 CSS 框架与 LitElement 一起使用

jquery - 如果字段有搜索词,使用 jQuery 设置搜索字段背景颜色

html - 如何使用 Servlet 从 HTML 表单中检索 URDU 数据(UTF-8)以插入 MYSQL 数据库