使用元素与事件指令

一、使用元素指令

ng-if 从DOM中添加和移除元素

ng-class 为某个元素设置class属性

ng-class-even 对由ng-repeat指令生成的偶数元素设置class属性

ng-class-odd 对由ng-repeat指令生成的奇数元素设置class属性

<tr ng-repeat="item in data" ng-class-even="settings.rows" ng-class-odd="settings.columns"></tr>

ng-hide 在DOM中显示和隐藏元素

ng-show 在DOM中显示和隐藏元素

ng-style 设置一个或多个CSS属性,而不是通过一个CSS类。

<td ng-style="{‘background-color‘:settings.columns}">{{item.action}}</td>

ng-style指令被配置为使用一个对象,该对象的属性为相应的应设置的CSS属性。

二、处理事件

ng-blur 元素失去焦点时被触发

ng-change 表单元素的内容状态发生变化时被触发(例如复选框被选中,输入框元素中的文本被修改等等)

ng-click 用户点击鼠标或光标时触发

ng-copy/ng-cut/ng-paste 为copy,cut,paste事件指定自定义行为

ng-dbclick 用户双击鼠标/光标时触发

ng-focus 元素获得焦点时触发

ng-keydown/ng-keypress/ng-keyup 用户按下/释放某个键时触发

ng-mousedown/ng-mouseenter/ng-mouseleave/ng-mousemove/ng-mouseover/ng-mouseup 在用户使用鼠标/光标与元素发生交互时触发

ng-submit 表单被提交时触发

事件处理器可以直接计算一个表达式或者调用控制器的一个行为。

<button ng-click="data.color=‘red‘">{{data.value}}</button>
<!--传入event使用$event-->
<p ng-mouseenter="handleEvent($event)"></p>  

$scope.handleEvent=function(e){
    // do something
}

添加事件指令之外的事件

<div tap="change()"></div>
myApp.directive("tap",function(){
    return function(scope,element,attrs){
        element.on("touchstart touchend",function(){
            scope.$apply(attrs["tap"]);
        })
    }
})

使用jqLite的on方法为touchstart和touchend事件注册一个处理函数。我的处理函数调用scope.$apply方法来计算指令属性值所定义的任何表达式,该属性值是从属性集合中取到的。

三、管理特殊属性

3.1 布尔属性

某些HTML属性仅当元素上存在该属性时就产生效果,不论值是多少,这类属性称为布尔属性。

比如:disabled 当应用了这个属性之后就会被禁用,即使该属性没有值。可以设置空值,不设置值,或者设置为disabled。不能通过设置disabled=false来启用该元素

布尔属性的指令有:

ng-checked 管理checked属性(在input元素上使用)

ng-disabled 管理disabled属性(在input和button元素上使用)

ng-open 管理open属性(在details元素上使用)

ng-readonly 管理readonly属性(在input元素上使用)

ng-selected 管理selected属相(在Option元素上使用)

3.2 管理其他属性

ng-href 在a元素上设置href属性,在使用这个指令时,会在angularjs处理完元素之前防止用户通过单击链接跳转到错误的目标位置。

ng-src 在img元素上设置src属性

ng-srcset 在img元素上设置srcset属相。允许为显示不同的大小和像素密度而指定多个图片。

时间: 2025-01-31 00:35:24

使用元素与事件指令的相关文章

Angular如何给动态生成的元素绑定事件

在AngularJS中,操作DOM一般在指令中完成,事件监听机制是在对于已经静态生成的dom绑定事件,而如果在指令中动态生成了DOM节点,动态生成的节点不会被JS事件监听. 举例来说: angular.module('myapp',[]) .directive('myText',function(){ return{ restrict:'A', template:'<div ng-click="hello()">Hi everyone</div>', link:

vue(原理)_模板解析(一般指令的解析和事件指令的解析)

1.解析一般指令(以v-text为例) 其他普通指令(v-text, v-model, v-html, v-class)和上面的原理类似 2.解析事件指令(以v-on:click为例) 3.总结 事件指令解析步骤: 1) 从指令名中取出事件名2) 根据指令的值(表达式)从methods 中得到对应的事件处理函数对象3) 给当前元素节点绑定指定事件名和回调函数的dom 事件监听4) 指令解析完后, 移除此指令属性 一般指令解析步骤: 1) 得到指令名和指令值(表达式) text/html/clas

06 同时给多个元素绑定事件

1 要求 同时给多个相同元素绑定相同的时间 例如:给一个无序列表中的每一个li元素绑定一个事件,单击每个li元素的时候改变背景颜色和文本颜色 2 思路 利用jQuery的on()实现同时绑定 3 准备 3.1 jQuery的 on()方法 怎么使用? 在选择元素上绑定一个或多个事件的事件处理函数. on()方法绑定事件处理程序到当前选定的jQuery对象中的元素.在jQuery 1.7中,.on()方法 提供绑定事件处理程序所需的所有功能.帮助从旧的jQuery事件方法转换,see .bind(

如何用js为动态生成的元素绑定事件

今天在开发项目的时候,需要为用js动态生成的元素绑定一个click事件,但是在页面加载之前,这个元素不存在,没法获取这个元素,然后为其添加事件.查阅jquery api 发现可以用on()事件(注意:新版本的jquery已经把live()去除,现在用on()),为动态生产的元素绑定事件,然后触发该事件执行.比如下面一个例子: 假设我们要给div动态添加的span绑定click事件形成如下结果 x //做法如下: ("#choose_result").on("click&quo

js jquery插入元素后事件会被注销

  js jquery插入元素后事件会被注销 document.body.innerHTML += <div id="dd">test</div>  //这个会注销事件 $(document.body).append(str);//使用这个 也可以绑定事件. 例子: //快捷键双击 $(".app_shortcut_item").dblclick(function () { var id = $(this).attr("id&quo

jquery为新增元素添加事件

jquery为新增元素添加事件 默认情况,你使用jquery新增一个元素 ,用class的方法无法绑定事件,需要将绑定的函数放到jquery外面 然后在绑定行内事件 这样就可以绑定了

HTML5实战与剖析之媒体元素(3、媒体元素的事件及方法)

HTML5中的媒体元素除了拥有非常多的属性之外,video标签和audio标签还能够出发非常多事件和方法. 这些方法监控着不同的属性的变化,这些变化有可能是媒体播放的结果,也可能是用户操作媒体的结果. 以下就为大家開始介绍媒体元素的相关事件. abort:触发时机是下载中断. canplay:在能够播放的时候,readyState的值为2的时候触发. canplaythrough:readyState的值为3的时候,触发.播放能够继续,而应该不会中断的时候触发. canshowcurrentfr

jQuery对 动态添加 的元素 绑定事件(on()的用法)

从jQuery 版本 1.7 起,on() 方法是向被选元素添加事件处理程序的(官方推荐)首选方法. 当浏览器下载完一个页面的时候就开始渲染(翻译)HTML标签,然后执行css.js代码,在执行js代码的时候就注册了相应绑定的事件,我们平常用jQuery给HTML标签绑定(单击)事件是一般这样写 $("#btnId").click(function () { //触发事件后 逻辑 });  但是对用js动态添加的元素 是无效的,即没有绑定单击事件,所以对于动态添加的标签需要用on()来

jQuery给动态添加的元素绑定事件的方法

jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定.在1.7版本以前使用live.但是在1.8版本以后推荐使用on.这里介绍jQuery中如何给动态添加的元素绑定事件在实际开发中会遇到要给动态生成的html元素绑定触发事件的情况 例如 1 <div id="testdiv"> 2 <ul></ul> 3 </div> 需要给<ul>里面动态添加的