angularJS指令系统---Directive

指令:Directive

angularJS 有一套完整的,可拓展的,用来帮助web应用开发的指令集;

在建立DOM期间,和HTML关联着的指令会被检测到,并被执行;

在angularJS中将前缀为 ng- 这种属性称之为指令,其作用就是为DOM元素调用方法,定义行为绑定数据等;

简单说:当一个angular 应用启动时,angular会遍历DOM树来解析HTML,根据指令不同,完成不同的操作;

指令属性小提示:

ng-xxx 的属性并不是标准中定义的属性,很多情况下语法校验是无法通过的;

HTML5允许拓展(自制的)的属性,以data- 开头;

在angularJS中可以使用 data-ng- 来让网页对HTML有效(两者效果都是一样的)

<hrml ng-app>
<hrml data-ng-app>

ng-app指令

ng-app 指令用来表明一个 angularJS 应用程序;

标记在一个 angularJS 的作用范围在根对象上;

系统执行的时候会自动的执行根对象范围内的指令;

可以在一个页面创建多个 ng-app 节点(不推荐),原因:创建多个 ng-app 时,默认只能执行第一个,后面的需要进行手动引导:angular.bootstrap()

标记的范围尽可能小,性能优化

多个 ng-app 的使用

<div ng-app="myAppOne" ng-controller="myAppOneController">
<input type="button" value="按钮一" ng-click="show()">
</div>
<div ng-app="myAppTwo" ng-controller="myAppTwoController">
<input type="button" value="按钮二" ng-click="show()">
</div>
</body>
<script type=‘text/javascript‘ src=‘bower_components/angular/angular.js‘></script>
<script type="text/javascript">
var myAppOne = angular.module(‘myAppOne‘,[]);
myAppOne.controller(‘myAppOneController‘,[‘$scope‘,function($scope){
    $scope.show = function(){console.log(‘1‘);};
}]);
var myAppTwo = angular.module(‘myAppTwo‘,[]);
myAppTwo.controller(‘myAppTwoController‘,[‘$scope‘,function($scope){
    $scope.show = function(){console.log(‘2‘);};
}]);
//手动引导让第二个div被myAppTwo管理
angular.bootstrap(document.querySelector(‘[ng-app="myAppTwo"]‘),[‘myAppTwo‘]);
//上面这种方法,可以解决,但是angularJS不推荐,推荐使用的是:
//创建一个新模块,去管理其他的模块 接下来将ng-app="myApp"
angular.module(‘myApp‘,[‘myAppOne‘],[‘myAppTwo‘]);
</script>
时间: 2024-12-14 18:05:58

angularJS指令系统---Directive的相关文章

前端angularJS利用directive实现移动端自定义软键盘的方法

最近公司项目的需求上要求我们iPad项目上一些需要输入数字的地方用我们自定义的软键盘而不是移动端设备自带的键盘,刚接到需求有点懵,因为之前没有做过,后来理了一下思路发现这东西也就那样.先看一下实现之后的效果: 实现的效果就是当点击页面中需要弹出软键盘的时候软键盘弹出,浮在页面的中间,和模态框一样的效果,可以在软键盘中输入任何数字,附带的功能有小数点.退格.清空.确定等功能.当在键盘上点击数字的时候页面中的表单中实时的添加对应的数字,上图中可以看到. 产品经理那边给的原因是iPad屏幕本来就小,如

angularjs中directive声明scope对象时修饰符解释和用法

在angular中我们定义directive方法时,可以看到 return { restrict: 'AE', scope: {}, template: '<div></div>', link: function() {} } 除了代码中出现的属性,还有一些其他的属性可供配置,这里不作详述. 今天我们要说的重点是scope字段. 常规用法设置 scope: { name: '=', age: '=', sex: '@', say: '&' } 假设我们的hml代码如下 &l

深究AngularJS(4)——Directive和Scope数据隔离与交互

什么是隔离 Scope AngularJS 的 directive 默认能共享父 scope 中定义的属性,例如在模版中直接使用父 scope 中的对象和属性.通常使用这种直接共享的方式可以实现一些简单的 directive 功能.当你需要创建一个可重复使用的 directive,只是偶尔需要访问或者修改父 scope 的数据,就需要使用隔离 scope.当使用隔离 scope 的时候,directive 会创建一个没有依赖父 scope 的 scope,并提供一些访问父 scope 的方式.

AngularJS 利用directive集成JQuery ZTree

前段时间一直在看AngularJS的资料,感觉是个很好的框架,很想有机会尝试用它做点什么. JQuery ZTree是国内非常不错的JQuery插件,功能齐全,文档和API也非常的友好,之前项目上常用此插件. AngularJS功能虽然非常强大,但UI上提供的插件不像JQuery那么多,而且只能通过directive定义扩展的UI插件,虽然国外已经提供了一些基于directive的Tree功能实现,但毕竟不像ZTree那样强大,而且Tree是做项目中很长用的一个基本功能. 因此,花了一点时间做了

angularjs指令系统系列课程(1):目录

angularjs里面有一套十分强大的指令系统 比如内置指令:ng-app,ng-model,ng-repeat,ng-init,ng-bind等等 从现在开始我们讲解AngularJS自定义指令 首先我们先看下AngularJS里新定义一个指令的写法: newsApp.directive('newDirective', function() { return { priority: 0, //优先级 template: '', templateUrl: '', //引入模板链接 replace

AngularJs 指令directive之require

controller的用法分为两种情形,一种是require自定义的controller,由于自定义controller中的属性方法都由自己编 写,使用起来比较简单:另一种方法则是require AngularJS内建的指令,其中大部分时间需要require的都是ngModel这个指令. 在自定义Angular指令时,其中有一个叫做require的字段,这个字段的作用是用于指令之间的相互交流.举个简单的例子,假如我们现在需要编写两 个指令,在linking函数中有很多重合的方法,为了避免重复自己

angularJS 指令系统

指令本质上就是AngularJS扩展具有自定义功能的HTML元素的途径.在HTML中要用内置指令ng-app标记出应用的根节点,这个指令需要以属性的形式来使用,因此可以将它写到任何位置,但是写到<html>的开始标签上是最常规的做法:所有内置指令的命名空间都使用ng作为前缀.为了防止命名空间冲突,不要在自定义指令前加ng前缀 来创建一个自定义指令 <my-directive></my-directive> angular.module('myApp',[]) .dire

AngularJS clone directive 指令复制

需求背景: directive模块化某表单信息,但表单信息可加入多条.此时就涉及到clone directive. 解决方式: 能够通过使用angularjs中$compile来进行clone directive.clone direcitve中常涉及到数据的绑定. 详细方法: tw.factory('DirectiveUtil', [function() { var DirectiveUtil = {}; DirectiveUtil.DirectiveBuilder = function(di

AngularJS之directive

AngularJS是什么就不多舌了,这里简单介绍下directive.内容基本上是读书笔记,所以如果你看过<AngularJS up and running>,那么这个可以忽略. 1.在AngularJS中,directives有两个主要的类型:1??UI展示的修改器,如ng-show.ng-model2??可复用的组件,如菜单.轮播器.taps等. 2.directives定义: 1 angular.module('stockMarketApp', []) .directive('stock