angular学习笔记02 angular指令大全
第一步 先要引入angular,
第二步 在 html 标签中<html ng-app> 加入ng-app(这是个必须的,不然会报错)
接下来就可以去使用angular的各种指令了。
//js文件 js语法需要注意
在网上的写法有很多,最好是按标准的写法来写,不然js代码经过压缩就不能使用了(很重要)
压缩代码会出错,不压缩的话还是能运行的,原因是压缩代码会把关键字替换,因此 angular 在定义的时候需要这样。
angular.module('antsins.controllers') .controller('GoodsCtrl', ['$scope', function($scope){ //这里就能写angular代码了 $scope.name ='tom' }]
下面就直接上指令
//数据和model的绑定
<input type="text" ng-model="yourname" placeholder="World">
///html5表单验证属性与angular配合,要是form里有验证规则没有通过 //则$valid为false <input type="text" name="cheshi" ng-model="myName" required/> <p ng-bind="myForm.cheshi.$valid"></p>
//复选框,checkboxModel.value1 选中为true,没选中为false <input type="checkbox" ng-model="checkboxModel.value1">
//直接使用ng-bind-html报错 <p ng-bind-html="myHTML"></p> 解决方法,需要将html代码标记为信任,如下 .controller('FormController', ['$scope','$sce', function($scope,$sce) { $scope.myHTML =$sce.trustAsHtml( 'I am an <code>HTML</code>string with ' + '<a href="#">links!</a> and other <em>stuff</em>'); }]) //<pre ng-bind-template="{{salutation}} {{name}}!"></pre>
//直接使用ngChange报错 <input type="text" ng-change="onChange() "/> 解决方法:必须加上:ng-model="age" <input type="text" ng-model="age" ng-change="onChange() "/>
//ng-class 给一个元素增加class ,可以是一个对象,要、拥有几个class,也可以只有一个 <div ng-class="{className:true,otherName:bol}"></div> //只有一个class <p ng-class="style">Using String Syntax</p> <input type="text" ng-model="style" placeholder="Type: bold strike red" aria-label="Type: bold strike red"> <hr> //也可以是以个数组,数组中分别不同的值 <p ng-class="[style1, style2, style3]">Using Array Syntax</p> <input ng-model="style1" placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red"><br> <input ng-model="style2" placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red 2"><br> <input ng-model="style3" placeholder="Type: bold, strike or red" aria-label="Type: bold, strike or red 3"><br> <hr> //还可以是数组和对象的混搭 <p ng-class="[style4, {orange: warning}]">Using Array and Map Syntax</p> <input ng-model="style4" placeholder="Type: bold, strike" aria-label="Type: bold, strike"><br> <label><input type="checkbox" ng-model="warning"> warning (apply "orange" class)</label>
//利用ng-class 实现简单的动画 .base-class { transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; } .base-class.my-class { color: red; font-size:3em; }
//ng-click="myVar='my-class'" 只要一点击就给myVar赋值 <input id="setbtn" type="button" value="set" ng-click="myVar='my-class'"> <input id="clearbtn" type="button" value="clear" ng-click="myVar=''"> <br> <span class="base-class" ng-class="myVar">Sample Text</span>
//ngClassEven 和 ngClassOdd 指令的使用 奇数就使用odd,偶数就使用even //常于ng-repeat配合使用 //ng-init 数据初始化,相当于var,给一个变量赋值 <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']"> <li ng-repeat="name in names"> <span ng-class-odd="'odd'" ng-class-even="'even'"> {{name}} </span> </li> </ol>
//ngClick 点击事件
//ngCloak 使用后没有{{}} 闪屏的情况,相当于ng-bind <div id="template1" ng-cloak>{{ 'hello' }}</div> <div id="template2" class="ng-cloak">{{ 'world' }}</div>
//ngCopy 输入框中的文字被复制的时候会触发的事件 //ngCut 输入框中的文字被剪切的时候就会触发的事件 asdfasdfasd <input ng-copy="copied=true" ng-init="copied=false; value='copy me'" ng-model="value"> copied: {{copied}} <input ng-cut="cut=true" ng-init="cut=false; value='cut me'" ng-model="value"> cut: {{cut}}
//ng-csp 修改 AngularJS 中关于 "eval" 的行为方式及内联样式: ng-csp 指令用于修改 AngularJS 的安全策略。 如果使用了 ng-csp 指令, AngularJS 将不会执行eval 函数,这样就无法注入内联样式。 设置 ng-csp 指令为 no-unsafe-eval, 将阻止 AngularJS 执行 eval 函数,但允许注入内联样式。 设置 ng-csp 指令为 no-inline-style, 将阻止 AngularJS 注入内联样式,但允许 执行 eval 函数。 如果开发 Google Chrome 扩展或 Windows 应用 ng-csp 指令是必须的。 注意:ng-csp 指令不会影响 JavaScript,但会修改 AngularJS 的工作方式,这就意味着: 你仍然可以编写 eval 函数, 且也可以正常执行, 但是 AngularJS 不能执行它自己的 eval 函数。如果采用兼容模式,会降低 30% 的性能。
//ngDblclick 双击会触发的事件
//ngDisabled 禁用指令:值为true的时候禁用button <label>Click me to toggle: <input type="checkbox" ng-model="checked"></label><br/> <button ng-model="button" ng-disabled="checked">Button</button>
//ng-Focus 失去焦点时触发的事件
//ngHref,直接用href 就不能使用angular语法 <a id="link-3" ng-href="/{{'123'}}">link 3</a>
/ngIf 为true,则span显示 <span ng-if="checked" class="animate-if"> This is removed when the checkbox is unchecked. </span> //ng-hide功能类似,使用方式相反。元素的显示或隐藏是通过改变CSS的display属性值来实现的。 //ng-if指令可以根据表达式的值在DOM中生成或移除一个元素。 //如果赋值给ng-if的表达式的值是false,那对应的元素将会从DOM中移除, //否则生成一个新的元素插入DOM中。ng-if同no-show和ng-hide指令最//本//质/的区别是, //它不是通过CSS显示或隐藏DOM节点,而是删除或者新增结点。
//ng-keydowm 返回的按键的字符值 //ngkeypress 返回的ASSCII字符
<input ng-keyup="event=$event">
<p>event keyCode: {{ event.keyCode }}</p>
<p>event altKey: {{ event.altKey }}</p>
event.altKey
功能:检测事件发生时Alt键是否被按住了。
语法:event.altKey
取值:true | false
说明:
altKey属性为true表示事件发生时Alt键被按下并保持,为false则Alt键没有按下。
altKey属性可结合鼠标或键盘使用,多用于制作一些快捷操作方式。
event.ctrlKey
功能:检测事件发生时Ctrl键是否被按住了。
语法:event.ctrlKey
取值:true | false
说明:
ctrlKey属性为true表示事件发生时Ctrl键被按下并保持,为false则Ctrl键没有按下。
ctrlKey属性可结合鼠标或键盘使用,多用于制作一些快捷操作方式。
event.shiftKey
功能:检测事件发生时Shift键是否被按住了。
语法:event.shiftKey
取值:true | false
说明:
shiftKey属性为true表示事件发生时Shift键被按下并保持,为false则Shift键没有按下。
shiftKey属性可结合鼠标或键盘使用,多用于制作一些快捷操作方式。
//ngList 输入的转为数组,输入逗号会分隔 <input name="namesInput" ng-model="names" ng-list required></label> //ngList 输入的转为数组,输入换行会分隔 <textarea ng-model="list" ng-list=" " ng-trim="false"></textarea> //form 中有输入不不符合规范的时候 <code>{{form.input.$valid}}为false
//ngModel 适用的标签 For basic examples, how to use ngModel, see: input text checkbox radio number email url date datetime-local time month week select textarea ng-valid: the model is valid //有效的输入 ng-invalid: the model is invalid //无效的输入 ng-valid-[key]: for each valid key added by $setValidity ng-invalid-[key]: for each invalid key added by $setValidity ng-pristine: the control hasn't been interacted with yet ng-dirty: the control has been interacted with ng-touched: the control has been blurred ng-untouched: the control hasn't been blurred ng-pending: any $asyncValidators are unfulfilled ng-empty: the view does not contain a value or the value is deemed "empty", as defined by the ngModel.NgModelController method ng-not-empty: the view contains a non-empty value
//ngModelOptions 数据模型的选项配置 <input type="text" name="userName" ng-model="user.name" ng-model-options="{ updateOn: 'blur' }" /> //上面这个例子中只有失去焦点的时候才会根新数据 ng-model-options="{ updateOn: 'default blur' }" //上面的例子中,输入会更新model,失去焦点也会更新model(感觉这个没太必要) debounce:{default:1000,blur:0}}" //上面的例子中,时间间隔1秒没有输入没更新model,失去焦点会立即更新model ng-model-options="{ debounce: 1000 }" //上面这个例子中,如果时间间隔1s内没 有继续输入就会更新数据
1 2 3 4 5 6 | //ngMouseDown 鼠标点击 //ngMouseuo 鼠标松开事件 //ng-non-bindable 指令用于告诉 AngularJS 当前的 HTML 元素或其子元素不需要编译。 //在这个标签内的指令不会被执行 <div ng-non-bindable>Ignored: {{1 + 2}}</div> |
//隐藏的元素会被展开 <details id="details" ng-open="open"> <summary>Show/Hide me</summary> </details>
//<select ng-model="myColor" ng-options="color.name for color in colors"> 控制器中数据 $scope.colors = [ {name:'black', shade:'dark'}, {name:'white', shade:'light', notAnOption: true}, {name:'red', shade:'dark'}, {name:'blue', shade:'dark', notAnOption: true}, {name:'yellow', shade:'light', notAnOption: false} ]
//<select ng-model="myColor" ng-options="color.name group by color.shade for color in colors"> select中数据会有嵌套 //根据color.notAnOption 的boolear值去判断这个选项是不是禁用了 <select ng-model="myColor" ng-options="color.name group by color.shade disable when color.notAnOption for color in colors"> </select> //ngPaste 粘贴数据进去的时候会触发的事件
//ng-pattern="regex" 正则判断 $scope.regex = '\\d+'; <input type="text" ng-model="model" id="input" name="input" ng-pattern="regex" /><br>
//ngPluralize 隐藏属性?(查不到资料
//为true是,输入框是只读的 <input type="text" ng-readonly="checked" value="I'm Angular" aria-label="Readonly field" />
/ng-src 写法 <img ng-src="http://www.gravatar.com/avatar/{{hash}}" alt="Description" /> //ng-style 写法 <span ng-style='{"color":"blue"}'>Sample Text</span> //ng-submit 表单提交触发的事件 //ng-switch 内容的切换 //ng-value
//script 用来写模块 <script type="text/ng-template" id="/tpl.html"> Content of the template. </script> <a ng-click="currentTpl='/tpl.html'" id="tpl-link">Load inlined template</a> <div id="tpl-content" ng-include src="currentTpl"></div>
nagular指令大概就是这些了,大部分是从官网取来的https://docs.angularjs.org/
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· MQ 如何保证数据一致性?
· 《HelloGitHub》第 108 期