zoukankan      html  css  js  c++  java
  • AngularJS 指令详解

    AngularJS 指令详解

    ng-app 指令

    ng-app指令用于指定angularJS应用当前元素为根元素

    所以AngularJS应用都必须要有一个根元素

    而且HTML文档中只允许出线一个ng-app指令,如果出现多个ng-app指令,则只有第一个会被使用。

    <body ng-app="">
    </body>
    

    ng-bind指令

    ng-bind 指令告诉AngularJS使用给定的变量或者表达式的值来替换HTML元素的内容,如果给定的变量或者表达式的值修改了,对应的HTML元素也会修改。所有的HTML元素都支持该指令。

    <element ng-bind=”expression” />

    或者

    <element class=”ng-bind:expression” />

    1 <div ng-app="" ng-init="myText='Hello World!'">
    2 <p ng-bind="myText"></p>
    3 </div>

    ng-bind-html 指令

    ng-bind-html指令是通过一个安全的方式将编辑的html内容绑定到html元素上。

    当你想通过AngularJS在你的应用中写入html,需要检测一些危险的代码,通过“angular-santize.js”模块,使用ngSanitize函数来检测代码的安全性。

    <element ng-bind-html=”expression” />

     <p ng-bind-html="myText"></p>
    
     $scope.myText = "My name is: <h1>Tom</h1>";

    ng-bind-template指令

    ng-bind-template指令用于将指定表达式的内容替换为HTML元素内容,当你想在html元素上绑定多个表达式时可以使用ng-bind-template指令

    <element ng-bind-template = “expression” />

      <div ng-init="name='张三';age='18'" ng-bind-template="我是{{name}},今年{{age}}岁"></div>

    ng-blur指令

    ng-blur指令在元素失去焦点时执行表达式,ng-blur指令不会覆盖原生的onblur事件,如果触发该事件,ng-blur表达式和原生的onblur时间都会执行。

    支持对象:<a> <input> <select> <textarea>,窗口对象

    1 <button ng-init="count=0" ng-blur="count=count+1" onblur="alert('不好意思我只是执行了onblur事件!')">我是onblur的事件元素 <span>{{count}}</span></button>

    ng-change指令

    ng-change指令在html元素改变时执行,ng-change指令需要搭配ng-model指令一起使用,ng-change不会覆盖原生的onchange事件;

    ng-change事件在值每次修改时触发,不需要等待完成的过程,或者等待失去焦点的过程。

    ng-change事件只针对输入框值得真实修改,而不是通过javaScript来修改的。

    支持对象:<input> <select> <textarea>元素

    <element ng-change=”expression” />

    1 <input type="text" ng-change="Change()" ng-model="myvalue" />
    2 change事件执行次数:{{changeCount}}
    3 
    4 $scope.changeCount = 0;
    5  $scope.Change = function () {
    6       $scope.changeCount++;
    7 }

    ng-checked 指令

    ng-check指令用于设置复选框和单选按钮的checked属性,

    如果ng-checked属性返回true,复选框checkbox或单选按钮radio将会被选中;

    <input type=”checkbox|radio” ng-checked=”expression” />

    1 <div>
    2  <p>汽车品牌(复选)</p>
    3  <input type="checkbox" ng-model="carCheck" />全选
    4  <input type="checkbox" ng-checked="carCheck">福特
    5  <input type="checkbox" ng-checked="carCheck">雪佛兰
    6  <input type="checkbox" ng-checked="carCheck">一汽
    7  <input type="checkbox" ng-checked="carCheck">广汽本田
    8  <p>点击全选 选择全部品牌</p>
    9 </div>

    ng-class指令

    ng-class指令用于给html元素动态绑定一个或者多个CSS类。
    ng-class 的值可以是字符串,对象或者一个数组。

    如果是字符串,多个类名之间使用空格分开。

    如果是对象需要使用key-value对,key为类名,value是一个布尔值只有value=true时才会被添加。

    如果是数组,数组元素可以是字符串或者对象。

    <element ng-class=”expression” />

    expression 返回一个或多个类名

    <style>
            .sky {
                background-color: lightblue;
            }
    
            .tomato {
                background-color: coral;
            }
    </style>
    <div>
                <p>请选择一个样式</p>
                <select ng-model="home">
                    <option>sky</option>
                    <option>tomato</option>
                </select>
                <div ng-class="home">
                    <h1>Welcome home</h1>
                    <p>这是ng-clas指令示例</p>
                </div>
     </div>
    <style>
    .sky {
        background-color: lightblue;
    }
    
    .tomato {
        background-color: coral;
    }
    </style>
    
    <div class="frame">
       <p>请选择一个样式</p>
       <select ng-model="home">
           <option>sky</option>
           <option>tomato</option>
       </select>
       <div ng-class="home">
           <h1>Welcome home</h1>
           <p>这是ng-clas指令示例</p>
       </div>
     </div>

    ng-class-even指令

    ng-class-even指令为html动态绑定一个或多个css,但是只作用于偶数行。

    ng-class-even 指令需要搭配ng-repeat指令使用。

    ng-class-even 指令建议使用在表格的样式渲染中,其他所有的html元素都是支持的。

    ng-class-odd指令

    ng-class-odd指令为html动态绑定一个或多个css,但是只作用于奇数行。

    ng-class-odd 指令需要搭配ng-repeat指令使用。

    ng-class-odd 指令建议使用在表格的样式渲染中,其他所有的html元素都是支持的。

    ng-repeat指令

    用于循环输出指定HTML元素,集合必须是数组或对象。

    <div  ng-init="records=['记录1','记录2','记录3','记录4']">
                <h3 ng-repeat="x in records">{{x}}</h3>
    </div>
     1 <style>
     2 .sky {
     3      background-color: lightblue;
     4 }
     5 
     6 .tomato {
     7     background-color: coral;
     8 }
     9 
    10 .even {
    11      color: red;
    12 }
    13 
    14 .odd {
    15     color: aqua;
    16 }
    17 </style>
    18 
    19 <div>
    20     <table>
    21         <tr>
    22             <td>姓名</td>
    23             <td>联系电话</td>
    24         </tr>
    25         <tr ng-repeat="x in records" ng-class-even="'even tomato'" ng-class-odd="'odd'">
    26             <td>{{x.name}}</td>
    27             <td>{{x.tel}}</td>
    28          </tr>
    29     </table>
    30 </div>    
    31 
    32  $scope.records = [{
    33     "name": "张三",
    34     "tel": "18515151515"
    35 }, {
    36    "name": "李四",
    37    "tel": "18515151511"
    38  }, {
    39    "name": "王五",
    40    "tel": "18515151512"
    41 } ];

    ng-click指令

    元素执行单击事件触发表达式

    我被点击{{clickCount}}次<input type="button" ng-click="clickCount=clickCount+1" value="你点击我试试" />

    ng-controller指令

    ng-controller指令用于为应用程序添加控制器

    在控制器中可以添加代码,添加函数和变量,并使用scope对象来访问。

    <div ng-app="myApp" ng-controller="myCtrl">
    </div>
     var app = angular.module("myApp", );
     app.controller("myCtrl", function ($scope) {
          //逻辑代码
    }

    ng-csp指令

    ng-csp指令用于修改AngularJS的安全策略。

    如果使用了ng-csp指令,AngularJS将不会执行eval函数,这样就无法注入内联样式。

    设置ng-csp指令为no-unsafe-eval,将阻止AngularJS执行eval函数,但允许注入内联样式。

    设置ng-csp指令为no-inline-style,将阻止AngularJS注入内联样式,但允许执行eval函数。

    备注:ng-csp指令不会影响javaScript,但会修改angularJS的工作方式;

    ng-cut指令

    剪切时执行

     <input ng-cut="cutcount=cutcount+1" ng-init="cutcount=0" value="剪切这个文本" />  文本被剪切了{{cutcount}}次

    ng-copy指令

    复制时执行

    <input ng-copy="copycount=copycount+1" ng-init="copycount=0" value="复制这个文本" />文本被复制了{{copycount}}次

    Ng-paste指令

    <input ng-paste="pastecount=pastecount+1" ng-init="pastecount=0" value="在这粘贴" />  文本被粘贴了{{pastecount}}次

    ng-dblclick指令

    双击时执行

    <input ng-dblclick="dblcount=dblcount+1" ng-init="dblcount=0" value="双击我" type="text" />   双击了{{dblcount}}次

    ng-disabled 指令

    禁用/启用 元素

    <input type="checkbox" ng-model="allDisable" />是否禁用
    
    <input type="text" ng-disabled="allDisable" />
    
    <input type="radio" ng-disabled="allDisable" />

    ng-focus指令

    获取焦点后执行表达式

    <input type="text" ng-focus="focusCount =focusCount+1" /> 获取焦点次数{{focusCount}} 

    ng-hide指令

    ng-hide 指令在表达式为true时隐藏html元素

    <element ng-hide=”expression” />

    作为css类使用

    <element class=”ng-hide” />

    <div class="frame">
        隐藏html<input type="checkbox" ng-model="myHide">
        <div class="ng-hide">我是隐藏class</div>
        <div ng-hide="myHide">
            <h1>Welcome</h1>
        </div>
    </div>

    ng-href指令

    ng-href指令覆盖了原生<a>元素的href属性。

    <a ng-init="nghref='http://www.baidu.com'" href="http://www.sina.com" ng-href="{{nghref}}">前往百度</a><br />

    ng-if 指令用于在表达式为false时候移除html元素,如果为true会添加被移除的元素并显示。

    ng-if不同于ng-hide指令,ng-hide是隐藏元素而ng-if是从DOM中移除元素。

    <div >
        <label><input type="checkbox" ng-model="myif" />选择我可以删除或添加元素</label> 
        <div ng-if="myif">
            <H1>Hello 我是ng-if指令</H1>
        </div>
    </div>    

    ng-include指令

    用于指定包含外部的HTML文件,包含的内容作为指定元素的子节点,ng-include属性的值可以是一个表达式,返回一个文件名。默认情况下需要包含在同一个域名下的文件。

    <element ng-include=”filename” onload=”expression” autoscroll=”expression” />

    或者ng-include指令作为元素使用

    <ng-include src=”filename” onload=”expression” autoscroll=”expression”> </ng-include>

    ng-init指令

    ng-init指令初始化执行给定的表达式。

     <div ng-init="initCount=100">我是initCount:{{initCount}}</div>

    ng-keydown指令

    表示在指定HTML元素上按下按键时需要的操作,不会覆盖原生的onkeydown事件。 

    <input ng-keydown="keydownCount =keydownCount+1" ng-init="keydownCount=0" /> keydown执行次数{{keydownCount}}

    ng-keypress指令

    表示在指定HTML元素上按下按键时需要的操作,不会覆盖原生的onkeypress事件。

    <input ng-keypress="keypressCount =keypressCount+1" ng-init="keypressCount=0" />keypress执行次数{{keypressCount}}

    ng-keyup指令

    表示在指定HTML元素上松开按键时需要的操作,不会覆盖原生的onkeyup事件。

    <input ng-keyup="keyupCount =keyupCount+1" ng-init="keyupCount=0" />keyup执行次数{{keyupCount}}

    按键敲击事件顺序:1.keydown 2.keypress 3.keyup

    ng-list指令

    ng-list指令将字符串转换为数组,并使用都好分隔开。

    <input> <select> <textarea>和其他可编辑指令都支持

    <input ng-model="list" ng-list />{{list}}

    ng-model指令

    ng-model指令绑定了HTML元素到scope变量中,如果在scope中不存在该变量,则创建该变量。

    绑定变量值

    <body ng-app="myApp" ng-controller="myCtrl">
        <!--ng-model指令 绑定变量-->
        <div class="frame">
            姓名:<input ng-model="name" />
        </div>
        <script>
            var app = angular.module("myApp", []);
            app.controller("myCtrl", function ($scope) {
                $scope.name = "张三";
            });
        </script>
    </body>

    双向数据绑定

    <body ng-app="myApp" ng-controller="myCtrl"> 
        <!--双向绑定-->
        <div class="frame">
            姓名:<input ng-model="name" />
            <h1>你输入的内容是:{{name}}</h1>
        </div>
    
        <script>
            var app = angular.module("myApp", []);
            app.controller("myCtrl", function ($scope) {
                $scope.name = "张三";
            });
        </script>
    </body>

    Ng-model-option指令

    绑定数据触发的时间,或者指定等待时间(毫秒)

    <element ng-model-option=”option”>

    Option : 绑定规则如下:

             {updateOn:’event’}规则指定事件发生后绑定数据

             {debounce:1000}等待多少毫秒后绑定数据

             {allowInvalid:true|false}是否需要验证后绑定数据

             {getterSetter:true|false}规定是否作为getters/setters绑定模型

             {timezone:’0100’}规则是否使用时区

    <input ng-model="modelname1" />{{modelname1}}
    <input ng-model="modelname2" ng-model-options="updateOn:'blur',debounce:1000}" />{{modelname2}}

    ng-mousedown指令

    鼠标按下时要执行的操作,不会覆盖元素的onmousedown事件。

    <input ng-mousedown="mousedownCount=mousedownCount+1" ng-init="mousedownCount=0" />Mousedown执行次数{{mousedownCount}}

    ng-mouseup指令

    鼠标松开时执行的操作,不会覆盖元素的onmouseup事件

    <input ng-mouseup="mouseupCount=mouseupCount+1" ng-init="mouseupCount=0" />mouseup执行次数{{mouseupCount}}

    事件执行顺序:1.mousedown 2.mouseup 3.click

     ng-mouseenter指令

    鼠标在HTML元素穿过时执行的操作,不会覆盖onmouseenter事件

    <input ng-mouseenter="mouseenterCount=mouseenterCount+1" ng-init="mouseenterCount=0" />mouseenter执行次数{{mouseenterCount}}

    ng-mouseleave指令

    鼠标从HTML元素上移开时要执行的操作,不会覆盖onmouseleave事件。

    <input ng-mouseleave="mouseleaveCount=mouseleaveCount+1" ng-init="mouseleaveCount=0" />mouseleave执行次数{{mouseleaveCount}}

    ng-mousemove指令

    鼠标在HTML元素上移动时要执行的操作,不会覆盖onmousemove事件。

    <input ng-mousemove="mousemoveCount=mousemoveCount+1" ng-init="mousemoveCount=0" />mousemove执行次数{{mousemoveCount}}

    ng-mouseover指令

    鼠标移动到指定HTML元素上要执行的操作,不会覆盖onmouseover事件。

    <input ng-mouseover="mouseoverCount=mouseoverCount+1" ng-init="mouseoverCount=0" />Mouseover执行次数{{mouseoverCount}}

    ng-non-bindable指令

    用于告诉AngularJS当前的HTML元素或其子元素不需要编译。

    <element ng-non-bindable> </element>

    <p ng-non-bindable>这个代码不需要使用 AngularJS: {{ 5+5 }}</p>

    ng-open指令

    用于设置details列表的open属性,如果ng-open的表达式返回true则details列表是可见的。

    <label><input type="checkbox" ng-model="showDetails" />打开详细列表</label>
    <details ng-open="showDetails">
             <summary>Details列表标题</summary>
             <p>列表内容</p>
    </details>

    ng-options指令

    用于使用<options>填充<select>元素的选项

    ng-options 指令用数组来填充下拉列表。

    <select ng-init="selectNames = ['张三', '李四', 'tom', 'sam']" ng-model="nn"  ng-options="item for item in selectNames"> </select>

    ng-src指令

    覆盖了<img> 元素的src属性

    <img ng-src="img/img1.jpg" />

    ng-srcset指令

    覆盖了<img>元素的srcset属性

    <img ng-srcset="img/img2.jpg" />

    ng-style指令

    为HTML元素添加style属性,属性值为对象,返回值也是对象,由css中的属性和值组成。

    <div ng-init="style1={'height':'100px','background-color':'red','color':'lightblue'}" >
        <div ng-style="{{style1}}">
            你好我是ng-style指令,红色背景,浅蓝色字体。100px高度
        </div>
    </div>    

    ng-submit指令

    用于在表单提交后执行指定的函数

     1 <form ng-submit="MyFunc()">
     2     <input type="text" />
     3     <input type="submit" value="提交" />
     4     {{submitText}}
     5 </form>
     6 
     7 $scope.submitText = "未提交";
     8 $scope.MyFunc = function () {
     9      $scope.submitText = "已提交";
    10 }

     ng-switch指令 ng-switch-when指令 ng-switch-default指令

    根据表达式显示或隐藏对应的部分,读音的子元素使用ng-switch-when指令,如果匹配选中显示,其他为匹配的则移除,

    可以通过ng-switch-default指令设置默认选项,如果都没有匹配的情况,默认选项会显示。

     1 <select ng-model="myselected">
     2     <option value="sina">ww.sina.com</option>
     3     <option value="baidu">ww.baidu.com</option>
     4     <option value="google">ww.google.com</option>
     5 </select>
     6 
     7 <div ng-switch="myselected">
     8     <div ng-switch-when="sina">
     9         <p>欢迎访问新浪</p>
    10     </div>
    11     <div ng-switch-when="baidu">
    12         <p>欢迎访问百度</p>
    13     </div>
    14     <div ng-switch-when="google" >
    15         <p>欢迎访问谷歌</p>
    16     </div>
    17     <div ng-switch-default>
    18         <p>默认选项</p>
    19     </div>
    20 </div>

    ng-value指令 

    用于设置input或select元素的value属性

    <input ng-value="myval" type="text" />

    ng-true-value指令 ng-false-value指令

    当我们点击checkbox选中复选框是ng-model的值是true 对应ng-true-value值,取消选择为false 对应ng-false-value值;

    <input ng-model="checkboxModel" type="checkbox" ng-true-value="'true 选中'" ng-false-value="'false 没有选中'"> {{checkboxModel}}
  • 相关阅读:
    #2020征文TV#【鸿蒙基地】鸿蒙从窗口开始:Page Ability诞生记
    设计器打开某表单时提示:[某某表单]已经由用户[xxx]打开需解锁
    有效性设置解疑
    表单打开时显示空白页面解决办法
    工作流_知会设置
    单元格中既有公式又可以录入数据,怎么实现?
    更改系统时间
    下拉框改变后,如何清空后面几个单元格的值?
    如何调整人员的部门?
    如何修改iis访问端口
  • 原文地址:https://www.cnblogs.com/zhaochengshen/p/6700113.html
Copyright © 2011-2022 走看看