zoukankan      html  css  js  c++  java
  • 21、AngularJs知识点总结 part-3

    1、选择框select

    在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,也可以使用ng-repeat 指令来创建下拉列表:

    区别:ng-repeat 指令是通过数组来循环 HTML 代码来创建下拉列表,但 ng-options 指令更适合创建下拉列表,它有以下优势:

    使用 ng-options 的选项的一个对象, ng-repeat 是一个字符串。

     1 <div class=" container">
     2     <div ng-app="myApp" ng-controller="ctl">
     3         <select ng-model="selectName" ng-options="x for x in list">
     4         </select>
     5         <br/>
     6         <br/>
     7         <select>
     8             <option ng-repeat="x in list">{{x}}</option>
     9         </select>
    10 
    11         <br/>
    12         <br/>
    13         <!-- 使用ng-options得到selectedsite是一个对象-->
    14         <select ng-model='selectedsite' ng-options="x.site for x in sites"></select>
    15 
    16         <br/>
    17         <br/>
    18         <!-- 使用ng-repeat只能得到url这样的字符串-->
    19         <select ng-model="selectedSite">
    20             <option ng-repeat="x in sites">{{x.url}}</option>
    21         </select>
    22 
    23 
    24     </div>
    25 </div>
    26 
    27 
    28 <script>
    29     var app = angular.module('myApp', []);
    30     app.controller('ctl', function ($scope) {
    31         $scope.list = ['hello', 'nihao', 'salaheiyou']
    32         $scope.sites = [
    33             {site: "Google", url: "http://www.google.com"},
    34             {site: "Runoob", url: "http://www.runoob.com"},
    35             {site: "Taobao", url: "http://www.taobao.com"}
    36         ];
    37     });
    38 
    39 </script>

    2、表格

    <div class=" container">
        <div ng-app="myApp" ng-controller="ctl">
            <table>
                <tr ng-repeat="siteSelected in sites | orderBy:'url' ">
    
                    <td>
                        {{$index+1}}
                    </td>
    
                    <td>
                        <b>
                            {{siteSelected.site|uppercase}}
                        </b>
                    </td>
    
                    <td>
                        {{siteSelected.url}}
                    </td>
    
                    <td ng-if="$even" style="color: red">
                        偶数
                    </td>
    
                    <td ng-if="$odd" style="color:blue">
                        奇数
                    </td>
    
                </tr>
    
            </table>
        </div>
    </div>
    
    
    <script>
        var app = angular.module('myApp', []);
        app.controller('ctl', function ($scope) {
            $scope.list = ['hello', 'nihao', 'salaheiyou']
            $scope.sites = [
                {site: "Taobao", url: "http://www.taobao.com"},
                {site: "Google", url: "http://www.google.com"},
                {site: "Runoob", url: "http://www.runoob.com"}
            ];
        });
    
    </script>
    
    table, th , td {
        border: 1px solid grey;
        border-collapse: collapse;
        padding: 5px;
    }
    table tr:nth-child(odd) {
        background-color: #f1f1f1;
    }
    table tr:nth-child(even) {
        background-color: #ffffff;
    }

    3、SQL、HTML DOM、事件

    <div class=" container">
        <div ng-app="myApp" ng-controller="ctl">
    
            <!-- 设置是否可点击,点击状态取决于mySwitch这个值-->
            <button ng-disabled="mySwitch">
                点我
            </button>
    
            <!-- mySwtich这个值是checkbox的选中状态-->
            <p>
                <input type="checkbox" ng-model="mySwitch">按钮
            </p>
    
            <!-- 显示选中状态-->
            <p>
                {{mySwitch}}
            </p>
    
            <!-- 是否可见-->
            <p ng-hide="false"> 可见 </p>
    
            <p ng-hide="true"> 不可见 </p>
    
            <!-- 设置点击事件-->
            <button ng-click="count=count+1">点我加1</button>
            {{count}}
    
            <!-- 隐藏/显示一个按钮-->
            <br>
            <br>
            <button ng-click="toggle()">隐藏/显示</button>
            <p ng-show="myVar">看我72变</p>
        </div>
    </div>
    
    
    <script>
        var app = angular.module('myApp', []);
        app.controller('ctl', function ($scope) {
            $scope.count = 0;
            $scope.myVar = true;
            $scope.toggle = function () {
                $scope.myVar = !$scope.myVar;
            }
        });
    
    </script>

    4、 模块

    模块定义了一个应用程序,控制器通常属于一个模块

    你可以通过 AngularJS 的 angular.module 函数来创建模块

    <div ng-app="myApp">...</div>
    
    <script>
    
    var app = angular.module("myApp", []); 
    
    </script>

    "myApp" 参数对应执行应用的 HTML 元素。

    可以使用 ng-controller 指令来添加应用的控制器:

    <div ng-app="myApp" ng-controller="myCtrl">
    {{ firstName + " " + lastName }}
    </div>
    
    <script>
    
    var app = angular.module("myApp", []);
    
    app.controller("myCtrl", function($scope) {
        $scope.firstName = "John";
        $scope.lastName = "Doe";
    });
    
    </script>

    自定义指令

    JavaScript 中应避免使用全局函数。因为他们很容易被其他脚本文件覆盖。

    AngularJS 模块让所有函数的作用域在该模块下,避免了该问题

    什么时候载入库?

    JavaScript 中应避免使用全局函数。因为他们很容易被其他脚本文件覆盖。

    AngularJS 模块让所有函数的作用域在该模块下,避免了该问题

    7、表单

    <!--ng-app 指令定义了 AngularJS 应用 ng-controller 指令定义了应用控制器。-->
    <!-- formCtrl 函数设置了 master 对象的初始值,并定义了 reset() 方法。-->
    
    <div ng-app="myApp" ng-controller="formCtrl">
        <!--novalidate 属性是在 HTML5 中新增的。禁用了使用浏览器的默认验证-->
        <!-- novalidate 属性在应用中不是必须的,但是你需要在 AngularJS 表单中使用,用于重写标准的 HTML5 验证。    -->
        <form novalidate>
            First Name:<br>
            <!-- ng-model 指令绑定了两个 input 元素到模型的 user 对象-->
            <input type="text" ng-model="user.firstName"><br>
            Last Name:<br>
            <input type="text" ng-model="user.lastName">
            <br><br>
            <!-- ng-click 指令调用了 reset() 方法,且在点击按钮时调用。-->
            <button ng-click="reset()">RESET</button>
        </form>
        <p>form = {{user}}</p>
        <p>master = {{master}}</p>
    </div>
    
    <script>
        var app = angular.module('myApp', []);
        app.controller('formCtrl', function($scope) {
            $scope.master = {firstName: "John", lastName: "Doe"};
    //        reset() 方法设置了 user 对象等于 master 对象。
            $scope.reset = function() {
                $scope.user = angular.copy($scope.master);
            };
            $scope.reset();
        });
    </script>

    8、输入验证

     1 <!--$dirty    表单有填写记录-->
     2 <!--$valid    字段内容合法的-->
     3 <!--$invalid    字段内容是非法的-->
     4 <!--$pristine    表单没有填写记录-->
     5 <form ng-app="myApp" ng-controller="validateCtrl"
     6       name="myForm" novalidate>
     7 
     8     <p>用户名:<br>
     9         <input type="text" name="user" ng-model="user" required>
    10   <span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
    11   <span ng-show="myForm.user.$error.required">用户名是必须的。</span>
    12   </span>
    13     </p>
    14 
    15     <p>邮箱:<br>
    16         <input type="email" name="email" ng-model="email" required>
    17   <span style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid">
    18   <span ng-show="myForm.email.$error.required">邮箱是必须的。</span>
    19   <span ng-show="myForm.email.$error.email">非法的邮箱。</span>
    20   </span>
    21     </p>
    22 
    23     <p>
    24         <input type="submit"
    25                ng-disabled="myForm.user.$dirty && myForm.user.$invalid ||
    26   myForm.email.$dirty && myForm.email.$invalid">
    27     </p>
    28 
    29 </form>
    30 
    31 <script>
    32     var app = angular.module('myApp', []);
    33     app.controller('validateCtrl', function ($scope) {
    34         $scope.user = 'John Doe';
    35         $scope.email = 'john.doe@gmail.com';
    36     });
    37 </script>

    9、API

    angular.lowercase() 转换字符串为小写
    angular.uppercase() 转换字符串为大写
    angular.isString() 判断给定的对象是否为字符串,如果是返回 true。
    angular.isNumber() 判断给定的对象是否为数字,如果是返回 true。
     1 <div ng-app="myApp" ng-controller="myCtrl">
     2     <p>{{'original:'+x1}}</p>
     3     <p>{{'xiaoxie:'+ x2 }}</p>
     4     <p>{{'daxie:'+ x3 }}</p>
     5     <p>{{'isnumber:'+ x4 }}</p>
     6     <p>{{'isString:'+ x5 }}</p>
     7 </div>
     8 
     9 <script>
    10     var app = angular.module('myApp', []);
    11     app.controller('myCtrl', function($scope) {
    12         $scope.x1 = "John";
    13         $scope.x2 = angular.lowercase($scope.x1);
    14         $scope.x3 = angular.uppercase($scope.x1);
    15         $scope.x4 = angular.isNumber($scope.x1);
    16         $scope.x5 = angular.isString($scope.x1);
    17     });
    18 </script>

    10、包含

    11、动画

  • 相关阅读:
    react 脚手架cra的注意事项,以及脚手架生成目录的分析,以及四个脚本命令
    react组件传值的方式大全
    leetcode——367.有效的完全平方数
    leetcode——69.x的平方根
    leetcode——169.求众数
    leetcode——100.相同的树
    leetcode——172.阶乘后的零
    leetcode——35.搜索插入位置
    leetcode——26.删除排序数组中的重复项
    leetcode——5.最长回文子串
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/5345155.html
Copyright © 2011-2022 走看看