`
流浪的我
  • 浏览: 34162 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

angular.js 指令

 
阅读更多

AngularJS 指令

AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-

ng-app 指令初始化一个 AngularJS 应用程序。

ng-init 指令初始化应用程序数据。

ng-model 指令把元素值(比如输入域的值)绑定到应用程序。

 

ng-app 指令

ng-app 指令定义了 AngularJS 应用程序的 根元素

ng-app 指令在网页加载完毕时会自动引导(自动初始化)应用程序。

稍后您将学习到 ng-app 如何通过一个值(比如 ng-app="myModule")连接到代码模块。

 

ng-init 指令

ng-init 指令为 AngularJS 应用程序定义了 初始值

通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。

稍后您将学习更多有关控制器和模块的知识。

 

ng-model 指令

ng-model 指令 绑定 HTML 元素 到应用程序数据。

ng-model 指令也可以:

         为应用程序数据提供类型验证(number、email、required)。

         为应用程序数据提供状态(invalid、dirty、touched、error)。

         为 HTML 元素提供 CSS 类。

         绑定 HTML 元素到 HTML 表单。

ng-repeat 指令

ng-repeat 指令对于集合中(数组中)的每个项会 克隆一次 HTML 元素

 

创建自定义的指令

除了 AngularJS 内置的指令外,我们还可以创建自定义指令。

你可以使用 .directive 函数来添加自定义的指令。

要调用自定义指令,HTML 元素上需要添加自定义指令名。

使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割, runoob-directive:

 

<body ng-app="myApp">

<runoob-directive></runoob-directive>

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
    return {
        template : "<h1>自定义指令!</h1>"
    };
});
</script>

</body>

 

可以通过以下方法调用指令

   元素名   <runoob-directive></runoob-directive>;

   属性     <div runoob-directive></div>;

   类名     <div class="runoob-directive"></div>;

   注释     <!--directive:runoob-directive-->;

限制使用

你可以限制你的指令只能通过特定的方式来调用。   

 

var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
    return {
        restrict : "A",
        template : "<h1>自定义指令!</h1>"
    };
});

 通过添加 restrict 属性,并设置只值为 "A", 来设置指令只能通过属性的方式来调用.如果设置值为"AC",则是通过属性和类名来调用指令。

restrict值可以是下面几种:

   E作为元素名使用

   A作为元属性使用

   C作为元类名使用

   M作为元注释使用

ng-style  可以使用一个结构直接来表示当前节点的样式:

<div ng-style="{wwidth:100,height:100,background:'red'}"></div>

ng-class 直接设置当前节点的类,配合数据绑定作用很大

<div  ng-controller="textCtrl"  ng-class="cla"></div>

ng-class-even 和ng-class-odd是和ng-repeat配合使用的

<ul ng-init="l=[1,2,3,4]">
	<li ng-class-odd="odd" ng-class-even="even" ng-repeat="m in l">{{m}}</li>
</ul>

 ng-show ng-hide  显示和隐藏 ng-switch  根据一个值来决定那个节点显示,其它移除

<div ng-init="a=2">
	<ul ng-switch on="a">
		<li ng-switch-when="1">1</li>
		<li ng-switch-when="2">2</li>
		<li ng-switch-default>other</li>
	</ul>
</div>

 ng-src控制src属性

<img ng-src="{{'h'+'ead,png'}}"/>

 ng-href控制href属性

<a ng-href="{{'#'+'123'}}">here</a>

 ng-form

起初不明白为什么会有个表单指令,<form>标签感觉也够用啊。
以表单验证为例,

<input type="submit" ng-disabled="mainForm.$invalid" />

 也就是表单的状态为$invalid时禁用提交按钮。

如果场景再稍微复杂一点点,比如一个父表单中有多个子表单,子表单中有3个验证通过时父表单便可以提交。
但是,<form>是不可以嵌套的。
考虑到这种场景,我们便使用ng-form指令来解决这一问题。

<form name="mainForm" novalidate>
     <div ng-form="form1">
         姓名:<input type="text" ng-required="true" ng-model="name"/><br>
         证件号码:<input type="number" ng-minLength="15" ng-maxLength="18" ng-required="true" ng-model="idnum"/>
     </div>
     <br>
     <div ng-form="form2">
         监护人姓名:<input type="text" ng-required="true" ng-model="gname"/><br>
         监护人证件号码:<input type="number" ng-minLength="15" ng-maxLength="18" ng-required="true" ng-model="gidnum"/>
     </div>
     <button ng-disabled="form1.$invalid && form2.$invalid">submit all</button>
 </form>

ng-checked 选中状态 

 

<input type="checkbox" ng-checked="someProperty" ng-init="someProperty = true" ng-model="someProperty">

 

ng-selected 被选中状态 

 

<label>
     <input type="checkbox" ng-model="isFullStack">
     I'm Full Stack Engineer
 </label>
 <select>
     <option>Front-End</option>
     <option>Back-End</option>
     <option ng-selected="isFullStack">Full Stack !!!</option>
 </select>
  

 

ng-disabled 禁用状态 

  

<textarea ng-disabled="1+1==2">1+1=?</textarea>

 

ng-multiple 多选状态 

 

ng-readonly 只读状态 

 

 <input type="text" ng-readonly="stopTheWorld" value="stop the world after 3s"/>
 .run(function($rootScope,$timeout){
     $rootScope.stopTheWorld=false;
     $timeout(function(){
         $rootScope.stopTheWorld = true;
     },3000)
 })

 

ng-bind

ng-bind的行为和{{}}差不多,只是我们可以用这个指令来避免FOUC(Flash Of Unrendered Content),也就是未渲染导致的闪烁。

 

ng-cloak

ng-cloak也可以为我们解决FOUC。 ng-cloak会将内部元素隐藏,直到路由调用对应的页面。

 

ng-if

如果ng-if中的表达式为false,则对应的元素整个会从DOM中移除而非隐藏,但审查元素时你可以看到表达式变成注释了。
如果相进行隐藏,可以使用ng-hide。

上面的这是只是单向绑定(ng-model除外),即只是从数据到展示,不能反作用于数据。

 

 

分享到:
评论

相关推荐

    Angular.js v1.8.3.zip

    Angular.js 是一个强大的JavaScript框架,由Google维护,用于构建单页应用(Single Page Applications, SPA)。这个版本,v1.8.3,是Angular.js的一个稳定版本,它提供了丰富的功能和改进,帮助开发者构建高性能、可...

    Angular.js指令学习中一些重要属性的用法教程

    在Angular.js中,指令是构建可复用组件和复杂用户界面的核心工具。它们允许开发者扩展HTML,赋予HTML新的语义,以实现动态行为和数据绑定。这篇教程将深入讲解Angular.js指令的一些重要属性,帮助你更好地理解和应用...

    angular.js

    **Angular.js** 是一款强大的JavaScript框架,主要用于构建强交互性的Web应用。它的核心设计理念是引入MVC(Model-View-Controller)模式到前端开发中,从而帮助开发者更高效地组织和管理代码,尤其是在处理复杂的...

    angular.js 本地引用

    在前端开发领域,AngularJS(通常简称为Angular.js)是一个非常流行且强大的JavaScript框架,由Google维护。这个框架主要用于构建动态、单页Web应用程序(SPA),它提供了丰富的功能来简化前端开发过程,包括数据...

    angular.js指令中的controller、compile与link函数的不同之处

    最近一位大神问了我angular.js指令中的controller、compile与link函数的不同,想了想居然回答不出来,所以必须要深入的探究下,下面这篇文章主要介绍了关于angular.js指令中的controller、compile与link函数的不同之...

    基于angular.js的WUI-DatePicker日期选择器插件

    Angular.js 是一个强大的前端JavaScript框架,它提供了丰富的功能和灵活性,用于构建动态、数据驱动的Web应用程序。而WUI-DatePicker是一款基于Angular.js开发的日期选择器插件,专为提高用户体验而设计,提供了多种...

    angular.js-master.zip

    这个"angular.js-master.zip"压缩包很可能是AngularJS的源码仓库,特别是1.3版本的一个分支或特定里程碑。 AngularJS的核心特性包括: 1. **双向数据绑定**:AngularJS提供了一种机制,使得视图(View)与模型...

    angular.min.v125.rar(亲测可用)

    Angular.js 是一个强大的、开源的前端JavaScript框架,由Google维护,用于构建可维护的、高性能的Web应用程序。在这个"angular.min.v125.rar"压缩包中,包含的是Angular.js的一个特定版本——v1.2.5的压缩最小化版,...

    基于angular.js日期选择器.zip

    Angular.js,由Google维护,是一个强大的前端JavaScript框架,它提供了一种声明式编程方式来构建交互式的Web应用。在这个“基于angular.js日期选择器”的项目中,我们关注的是如何利用Angular.js的强大功能来实现对...

    angular.js资料

    Angular.js是一个非常流行的开源JavaScript框架,主要用于开发动态网页。对于有一定HTML和JavaScript基础的人来说,它是一个理想的选择,因为它能够帮助开发者组织JavaScript代码,创建响应式网站,并且与jQuery等...

    angular.js后台管理系统.zip

    Angular.js,作为一个强大的前端JavaScript框架,由Google维护,被广泛应用于构建复杂的单页应用(SPA)和后台管理系统。本篇将深入探讨Angular.js的核心特性、架构设计以及如何在实际项目中构建一个后台管理系统。 ...

    angular.js-master

    "angular.js-master"中的示例项目可能包含了以上概念的实际应用,例如,你可以看到如何设置模块、创建控制器、定义指令,以及如何使用服务进行数据交互。通过研究这个项目,你将更好地理解和掌握AngularJS的实践用法...

    angular.copy实例

    在配置服务、指令等时,可以使用 `angular.copy` 创建默认配置并允许用户覆盖部分属性。 ```javascript var defaultConfig = { logLevel: 'debug', timeout: 5000 }; function getConfig(userConfig) { return ...

    angular.min.js

    AngularJS 是一个 JavaScript 框架。它可通过 &lt;script&gt; 标签添加到 HTML 页面。 AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。

    angular.js-1.6.9

    AngularJS,作为一款由Google维护的前端JavaScript框架,是MVVM(Model-View-ViewModel)模式的杰出代表,以其强大的数据绑定、依赖注入和模块化功能深受开发者喜爱。在1.6.9这个版本中,我们看到对稳定性和性能的一...

    ssm+springsecurity+angular.js前后分离小练习

    Angular.js是Google维护的一个前端JavaScript框架,用于构建单页应用(SPA)。它提供了数据绑定、指令、服务、过滤器等功能,极大地提高了开发效率。在这个项目中,Angular.js可能被用来处理前端的数据展示、用户...

    angular-radial-plot:用于创建可定制的交互式径向图(雷达图)的 Angular.js 指令

    Angular.js 径向图指令 我认为雷达图很酷。 我也认为 Angular.js 和 d3.js 很酷,所以我决定创建一个 Angular.js 指令来创建可定制的径向图......和BLAM ,它来了! 您可以当前功能集的演示。 我欢迎任何贡献。 ...

    angular.js+webapi Demo

    Angular.js是Google维护的一个前端JavaScript框架,它极大地简化了构建动态单页应用程序(SPA,Single Page Applications)的过程。WebAPI则是微软提供的一种用于构建RESTful服务的技术,常用于后端数据交互。 **...

Global site tag (gtag.js) - Google Analytics