zoukankan      html  css  js  c++  java
  • Angular 学习1

    AngularJS 表达式


    AngularJS 使用 表达式 把数据绑定到 HTML。


    AngularJS 表达式

    AngularJS 表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量。

    AngularJS 表达式把数据绑定到 HTML,这与 ng-bind 指令有异曲同工之妙。

    AngularJS 表达式写在双大括号内:{{ expression }}。

    <div ng-app>
        <p>Count:{{5+5}}</p>
    </div>

    result:

    Count:10

    AngularJS 数字

    AngularJS 数字就像 JavaScript 数字:

    <div ng-app ng-init="quantity=1;cost=5">
        <p>Price: {{ quantity * cost }}</p>
    </div>

    result:

    Price: 5

    使用 ng-bind 的相同实例

    <div ng-app ng-init="quantity=1;cost=5">
        <p>Price <span ng-bind="quantity * cost"></span></p>
    </div>

    result:

    Price: 5

    AngularJS 字符串

    AngularJS 字符串就像 JavaScript 字符串

    <div ng-app ng-init="firstName='John';lastName='Doe'">
        <p>Name: {{ firstName + " " + lastName }}</p>
    </div>

    result:

    Name: John Doe

    使用 ng-bind 相同实例:

    AngularJS 对象

    AngularJS 对象就像 JavaScript 对象:

    <div ng-app ng-init="person={firstName:'John',lastName:'Doe'}">
        <p>Name: {{ person.lastName }}</p>
    </div>

    result:

    Name:  Doe

    使用 ng-bind 相同实例:

    AngularJS 数组

    AngularJS 数组就像 JavaScript 数组:

    <div ng-app  ng-init="points=[1,15,19,2,40]">
        <p>Third: {{ points[2] }}</p>
    </div>

    result:

    Third:  19

    使用 ng-bind 相同实例:


    AngularJS 表达式 与 JavaScript 表达式

    类似于 JavaScript 表达式,AngularJS 表达式可以包含字母,操作符,变量。

    与 JavaScript 表达式不同,AngularJS 表达式可以写在 HTML 中。

    与 JavaScript 表达式不同,AngularJS 表达式不支持条件判断,循环及异常。

    与 JavaScript 表达式不同,AngularJS 表达式支持过滤器。


    AngularJS 指令


    AngularJS 通过被称为 指令 的新属性来扩展 HTML。

    AngularJS 通过内置的指令来为应用添加功能。

    AngularJS 允许你自定义指令。


    AngularJS 指令

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

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

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

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

    完整的指令内容可以参阅 AngularJS 参考手册

    <div ng-app ng-init="firstName='John'">
        <p>在输入框中尝试输入:</p>
        <p>姓名:<input type="text" ng-model="firstName"></p>
        <p>你输入的为: {{ firstName }}</p>
    </div>

    result:

    ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的"所有者"。

    数据绑定

    上面实例中的 {{ firstName }} 表达式是一个 AngularJS 数据绑定表达式。

    AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。

    {{ firstName }} 是通过 ng-model="firstName" 进行同步。

    在下一个实例中,两个文本域是通过两个 ng-model 指令同步的:

    div ng-app="" ng-init="quantity=1;price=5">
     
    <h2>价格计算器</h2>
     
    数量: <input type="number"    ng-model="quantity">
    价格: <input type="number" ng-model="price">
     
    <p><b>总价:</b> {{ quantity * price }}</p>
     
    </div>

    result:

    重复 HTML 元素

    ng-repeat 指令会重复一个 HTML 元素

    <div ng-app="" ng-init="names=['Jani','Hege','Kai']">
      <p>使用 ng-repeat 来循环数组</p>
      <ul>
        <li ng-repeat="x in names">
          {{ x }}
        </li>
      </ul>
    </div>

    result:

    使用 ng-repeat 来循环数组

    • Jani
    • Hege
    • Kai

    ng-repeat 指令用在一个对象数组上:

    <div ng-app="" ng-init="names=[
    {name:'Jani',country:'Norway'},
    {name:'Hege',country:'Sweden'},
    {name:'Kai',country:'Denmark'}]">
    <p>循环对象:</p>
    <ul>
      <li ng-repeat="x    in names">
        {{ x.name + ', ' + x.country }}
      </li>
    </ul>
    </div>

    result:

    循环对象:

    • Jani, Norway
    • Hege, Sweden
    • Kai, Denmark

     

    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:

     


    你可以通过以下方式来调用指令:

       ------------------------------------------------------------------------------------

    • 元素名 <runoob-directive></runoob-directive>
    • ------------------------------------------------------------------------------------
    • 属性 <div runoob-directive></div>
    • ------------------------------------------------------------------------------------
    • 类名 <div class="runoob-directive"></div>
      •    return {
                restrict : "C",
                template : "<h1>自定义指令!</h1>"
            };
      • 你必须设置 restrict 的值为 "C" 才能通过类名来调用指令。

    ------------------------------------------------------------------------------------

    • 注释 <!-- directive: runoob-directive -->
      •   return {
                restrict : "M",
                replace : true,
                template : "<h1>自定义指令!</h1>"
            };
      • 我们需要在该实例添加 replace 属性, 否则评论是不可见的。
      • 你必须设置 restrict 的值为 "M" 才能通过注释来调用指令。
    • ------------------------------------------------------------------------------------

    以元素名为例:

     

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

    result:

    自定义指令!

    限制使用

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

    通过添加 restrict 属性,并设置值为 "A", 来设置指令只能通过属性的方式来调用:

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

     

    restrict 值可以是以下几种:

     

    • E 作为元素名使用
    • A 作为属性使用
    • C 作为类名使用
    • M 作为注释使用

     

    restrict 默认值为 EA, 即可以通过元素名和属性名来调用指令。

    MrNou
  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/yangsirc/p/8514155.html
Copyright © 2011-2022 走看看