ng 指令的自定义、使用

1、创建和使用
var app = angular.module(‘myApp‘,[‘ng‘]);
app.directive(‘指令名称‘,func);

自定义指令的命名:
驼峰式,有两部分构成,前缀一般是公司或者项目的缩写,后缀表示的为指令的作用(tsHello)
使用指令时:采用烤串式的方式去使用
(ts-hello)

2、高级

属性:
①template 显示的模板内容
②restrict: ‘EACM‘ (E:元素A:属性C:类M:注释)
作为注释去调用自定义指令时,需要设置replace属性为true
③replace 替换
④scope:接收参数

<!DOCTYPE html>
<html ng-app="myModule">
<head lang="en">
  <meta charset="UTF-8">
  <script src="js/angular.js"></script>
  <title></title>
</head>
<body>
<!--控制器的调用-->
<div ng-controller="myCtrl">
  <!-- element-->
  <ts-hello></ts-hello>
  <!-- attribute-->
  <div ts-hello></div>
  <!-- class-->
  <div class="ts-hello"></div>
  <!-- directive: ts-hello -->
</div>

<script>
  //模块的创建
  var app = angular.module(‘myModule‘,[‘ng‘]);
  //创建控制器
  app.controller(‘myCtrl‘, function ($scope) {

  })

  //创建自定义指令
  app.directive(‘tsHello‘, function () {
    return {
      template:‘<h1>Hello Directive</h1>‘,
//      E:Element A:Atrribute C:Class M:Comment
      restrict:‘EACM‘,
      replace:true
    }
  })

</script>
</body>
</html>

3.调用指令来传递参数并处理:

①在自定义的指令内部去准备接收
指定scope,把要传递过来的值存在驼峰式命名的变量中,指定@,在调用指令传参时,就会读取该属性对应的值
scope:{
testName:‘@‘
}
②传递参数
在调用指令时,指定对应的属性名称和要传递的值
<div test-hello test-name="123"></div>

<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
  <meta charset="UTF-8">
  <script src="js/angular.js"></script>
  <title></title>
</head>
<body>

<div ng-controller="myCtrl">
  <div ts-hello test-name="world"></div>
</div>
<script>
  var app = angular.module(‘myApp‘, [‘ng‘]);
//  创建指令并传参
  app.directive(‘tsHello‘, function () {
    return {
      template:‘<span> ‘ +
      ‘Hello {{testName}}</span>‘,
      scope:{
        testName:‘@‘
      }
    }
  })

  app.controller(‘myCtrl‘, function () {
    console.log(‘myCtrl  func is called‘);
  })
</script>
</body>
</html>
<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
  <meta charset="UTF-8">
  <script src="js/angular.js"></script>
  <title></title>
</head>
<body>

<div ng-controller="myCtrl">
</div>
<!--调用指令,并通过属性传参-->
<ts-directive ts-name="Hello World"></ts-directive>

<script>
  var app = angular.module(‘myApp‘, [‘ng‘]);
  //创建指令
  app.directive(‘tsDirective‘, function () {
    return{
      template:‘<h1>{{tsName}}</h1>‘,
      scope:{
        tsName:‘@‘//@取ts-name属性对应的值
      }
    }
  })

  app.controller(‘myCtrl‘, function () {
    console.log(‘myCtrl  func is called‘);
  })
</script>
</body>
</html>
时间: 2024-10-27 00:44:28

ng 指令的自定义、使用的相关文章

Angular中的内置指令和自定义指令

NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减少DOM操作,实现数据绑定,与业务逻辑进行交互. How: 指令主要分为两种:内置指令和自定义指令,通过下面的例子,简单记录一下如何去使用. 内置指令 在官方API文档上罗列了很多指令,内置指令可以分为:普通指令 和 事件指令,他们都是作用于HTML之上的,通过添加属性的方式来实现的.简单看一下一些

angularjs中常用的ng指令介绍【转载】

原文:http://www.cnblogs.com/lvdabao/p/3379659.html 一.模板中可使用的东西及表达式 模板中可以使用的东西包括以下四种: 指令(directive).ng提供的或者自定义的标签和属性,用来增强HTML表现力. 标记(markup).即双大括号{{}},可将数据单向绑定到HTML中. 过滤器(filter).用来格式化输出数据. 表单控制.用来增强表单的验证功能. 其中,指令无疑是使用量最大的,ng内置了很多指令用来控制模板,如ng-repeat,ng-

[译]ng指令中的compile与link函数解析 转

通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. 原文地址 angularjs里的指令非常神奇,允许你创建非常语义化以及高度重用的组件,可以理解为web components的先驱者. 网上已经有很多介绍怎么使用指令的文章以及相关书籍,相互比较的话,很少有介绍compile与link的区别,更别说pre-link与post-link了. 大部分教程只是简单的说下compile会在ng内部用

AngularJS -- 指令(创建自定义指令)

什么是指令 注:本指南是针对已经熟悉AngularJS基础知识的开发人员.如果你才刚刚开始,我建议查看系列教程. 指令是一个Dom元素上的标签(和元素上的属性, CSS 类样式一样,属于这个Dom元素),它告诉AngualrJS的HTML 编译器($compile),去附加一个行为到这个Dom元素上去,这个行为可以改变这个Dom元素,或者这个Dom元素的子元素. AngularJS 有一套自己内置的指令,如:ngBind,ngModel,ngClass等等...你可以自定义的指令.当Angula

angular ng指令

1.指令 ng-app,ng- 都是angular的指令系统ng-app: ng-app是angular的初始化,一个页面只能有一个ng-app,位置不限制.在页面上加入了这个执行,那么从当前的元素以及儿子元素,都交给angular管理,不赋值的话,会有一个默认模块.ng-app="myApp"这里如果加了自定义的名字,那么必须创建对应的模块.ng-model:双向绑定数据 ng-init:给字段赋予初始值.ng-init="val=0". ng-bind:单向绑定

vue.js 学习四(指令和自定义指令)

官方的指令说明已经很简单了,这里再写一遍,也是自己加深一下印象 v-text 就是写入单纯的文本,可以忽略这个指令直接双花括号代替 <span v-text="msg"></span> <!-- 和下面的一样 --> <span>{{msg}}</span> v-html 更新元素的 innerHTML,如果取回的值里面包含了html的样式,可以使用这个指令. 以下抄写了官方注意事项,对于用户输入的HTML,显示的时候需要谨慎

vue内置指令与自定义指令

一.内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  v-bind:bb 2.v-on:用于监听DOM事件: 例如:v-on:click  v-on:keyup 3.v-model:数据双向绑定:用于表单输入等:例如:<input v-model="message"> 4.v-show:条件渲染指令,为DOM设置css的style属性 5.v-if:条件渲染指令,动态在DOM内添加或删除

必须正确理解的---ng指令中的compile与link函数解析

这个绝对是深入的知识,但看完之后,对NG的理解就很利害啦. http://www.ifeenan.com/angularjs/2014-09-04-%5B%E8%AF%91%5DNG%E6%8C%87%E4%BB%A4%E4%B8%AD%E7%9A%84compile%E4%B8%8Elink%E5%87%BD%E6%95%B0%E8%A7%A3%E6%9E%90/ 开始分析之前,先让我们看看ng中是怎么样处理指令的. 当浏览器渲染一个页面时,本质上是读html标识,然后建立dom节点,当dom

vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化

一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 2.实例用法 2.1-1浅度监听:当点击页面,弹出发生变化了,a的值变为1,b的值变为101 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">