zoukankan      html  css  js  c++  java
  • angularjs学习笔记--service、$http、$scope、angularjs指令、事件、api

    <span ng-bind="name"></span>
    <span ng:bind="name"></span>
    <span ng_bind="name"></span>
    <span data-ng-bind="name"></span>
    <span x-ng-bind="name"></span>

    Ps:上述绑定方法等价

     

    ng-app=”模块名”  定义angularjs的使用范围;
    ng-init=”变量=值”,初始化变量的值,当有多个变量时,中间用分号隔开;
    ng-model=”变量”  定义变量名;
    ng-bind=”变量”  绑定变量名,获取该变量的数据。这里的变量即是前一条的变量名。但一般用双重花括号来获取变量的值。
    

      

    <div ng-app=""> 
        <p>名字:<input type="text" ng-model="name" /></p> 
        <h1>hello{{name}}</h1> 
    </div>

    ng-app指令告诉angularjs,<div>元素是angularjs应用程序的所有者;ng-model指令把输入域的值绑定到应用程序变量name;ng-bind指令把应用程序变量name绑定到某个段落的innerHTML。

     

    Angularjs对于开发单一页面应用程序变得更易:angularjs把应用程序数据绑定到HTML元素;可以克隆和充分HTML代码;可以隐藏和显示HTML元素;可以在HTML元素背后添加代码;支持输入验证。

    <div ng-app="" ng-init="firstName='jonh'"> 
    <p>姓名为:<span ng-bind="firstName"></span></p>     
    </div>
    

      

    H5允许扩展的属性,以data-开头,angularjs属性以ng-开头,但可以使用data-ng-让网页对h5有效。

    <div ng-app="" data-ng-init="firstName='jonh'"> 
    <p>姓名为:<span data-ng-bind="firstName"></span></p>     
    </div>
     
    

      

    Angularjs表达式:

    Angularjs表达式写在双大括号内;angularjs表达式把数据绑定到HTML,类似于ng-bind指令;angularjs将在表达式书写的位置输出数据。

     

     

    Angularjs模块定义了angularjs的应用;angularjs控制器用于控制angularjs应用;ng-app指令了应用,与ng-controller定义了控制器。

     

     8-20

    Angularjs指令是扩展的HTML属性,带有前缀ng-。Angularjs通过指令扩展HTML;其中内置指令可以为应用添加功能,也可自定义指令。

     

    Angularjs指令:

     

    ng-app指令:初始化一个angularjs应用;

    ng-init指令:初始化应用程序数据;通常情况下不使用,而是选择控制器或模块来实现相同的功能。

    ng-model指令:把元素元素值绑定到应用程序;

    ng-bind指令:绑定HTML元素到应用程序数据;

    ng-bind-html指令:绑定HTML元素的innerHTML到应用程序数据,并移除HTML字符串中危险字符;

    ng-bind-template指令:规定要使用模板替换的文本内容;

    ng-blur指令:规定blur事件的行为;

    ng-change指令:规定在内容改变时要执行的表达式;

    ng-checked指令:规定元素是否被选中;

    ng-class指令:指令HTML元素要使用的css类;

    ng-class-odd指令:类似ng-class,但只在奇数行起作用;

    ng-class-even指令:但只在偶数行起作用

    ng-click指令:定义元素被点击时的行为;

    ng-cloak指令:在应用正要加载时防止其闪烁;

    ng-controller指令:定义应用的控制器对象;

    ng-copy指令:规定拷贝事件的行为;

    ng-csp指令:修改内容的安全策略;

    ng-cut指令:规定剪切事件的行为;

    ng-dbclick指令:规定双击事件的行为;

    ng-disabled指令:规定一个元素是否被禁用;

    ng-focus指令:规定聚焦事件的行为;

    ng-form指令:指定HTML表单继承控制器表单;

    ng-hide指令:隐藏或显示HTML元素;

    ng-href指令:为a元素指令连接

    ng-if指令:条件为false移除HTML元素;

    ng-include指令:在应用中包含HTML文件

    ng-jq指令:定义应用必须使用到的库,如jQuery

    ng-keydown指令:规定按下按键事件的行为

    ng-keyup指令:规定松开按键事件的行为

    ng-keypress指令:规定按下按键事件的行为,其包括keydown与keyup两阶段

    ng-list指令:将文本转换为列表

    ng-model指令:绑定HTML控制器(input、select、textarea)的值到应用数据;

    ng-model-options指令:规定如何更新模型

    ng-mousedown指令:规定按下鼠标按键时的行为;

    ng-mouseenter指令:规定鼠标指针穿过元素时的行为

    ng-mouseleave指令:规定鼠标指针离开元素时的行为

    ng-mousemove指令:规定鼠标指针在指定的元素中移动的行为

    ng-mouseover指令:规定鼠标指针位于元素上方时的行为

    ng-mouseup指令:规定当在元素上松开鼠标按钮时的行为

    ng-non-bindable指令:规定元素或子元素不能绑定数据

    ng-open指令:指定元素的open属性

    ng-options指令:在<select>列表中指定<options>

    ng-paste指令:规定粘贴事件的行为

    ng-pluralize指令:根据本地化规则显示信息

    ng-readonly指令:指定元素的readonly属性

    ng-repeat指令:定义集合中每项数据的模板

    ng-selected指令:指定元素的selected的属性

    ng-show指令:显示或隐藏HTML元素

    ng-src指令:指定img元素的src属性

    ng-srcset指令:指定img元素的srcset属性

    ng-style指令:指定元素的style属性

    ng-submit指令:规定onsubmit事件发生时执行的表达式

    ng-switch指令:规定显示或隐藏子元素的条件

    ng-transclude指令:规定填充的目标位置

    ng-value指令:规定input元素的值

    <!DOCTYPE html>
    <html lang="en" ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../angular/angular.js"></script>
    </head>
    <body>
       <div ng-controller="personCtrl">
           <button ng-click="toggle()">隐藏/显示</button>
           <p ng-hide="myVar">
               名:<input type="text" ng-model="firstName"><br />
               姓:<input type="text" ng-model="lastName"><br />
               姓名:{{firstName + "" + lastName}}
           </p>
       </div>
       <script>
           var app = angular.module('myApp',[]);
           app.controller('personCtrl',function($scope){
               $scope.firstName = 'john';
               $scope.lastName = 'js';
               $scope.myVal = false;
               $scope.toggle = function(){
               $scope.myVar = !$scope.myVar;
               }
           });
       </script>
    </body>
    </html>
    

     

    Ps:这里的ng-app = “myApp”,而不是ng-app = “app” !ng-hide = “true”是让元素不可见。

     

    <!DOCTYPE html>
    <html lang="en" ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../angular/angular.js"></script>
    </head>
    <body>
    <div ng-controller="personCtrl">
        <button ng-click="toggle()">隐藏/显示</button>
        <p ng-show="myVar">
            名:<input type="text" ng-model="person.firstName"><br />
            姓:<input type="text" ng-model="person.lastName"><br />
            姓名:{{person.firstName + " " + person.lastName}}
        </p>
    </div>
    <script>
        var app = angular.module('myApp',[]);
        app.controller('personCtrl',function($scope){
            $scope.person ={
                firstName:'jonh',
                lastName:'kds'
            }
            $scope.myVar = true;
            $scope.toggle = function(){
            $scope.myVar = !$scope.myVar;
            }
        });
    </script>
    </body>
    </html>

    Ps:ng-show = “true” 设置元素可见

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../angular/angular.js"></script>
    </head>
    <body>
       <div ng-app="" ng-init="firstName='jonkk'">
           <p>在输入框中尝试输入:</p>
           <p>姓名:<input type="text" ng-model="firstName"></p>
           <p>你的输入为:{{firstName}}</p>
       </div>
    </body>
    </html>

    Ps:ng-app初始化一个angularjs应用程序;ng-init初始化应用程序数据;ng-model把元素值绑定到应用程序

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../angular/angular.js"></script>
    </head>
    <body>
      <div ng-app="" ng-init="names=[
          {name:'sda',country:'d'},
          {name:'df',country:'dd'},
          {name:'fgs',country:'sd'}
      ]">
        <p>循环对象:</p>
          <ul>
              <li ng-repeat="x in names">
                  {{x.name + ',' + x.country}}
              </li>
          </ul>
      </div>
    </body>
    </html>
    

     

    Ps:ng-repeat指令用在一个对象数组上,也可以用于重复一个HTML元素

     

    Ps:ng-app指令定义了angularjs应用程序的根元素,ng-app指令在网页加载完毕时会自动引导应用程序。

     

    Ps:.directive函数可以添加自定义指令,要调用自定义指令,需要在HTML元素上添加自定义指令名。指令名可以以驼峰法进行命名,但使用时需要使用 – 形式名字!!

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

    Ps:可以通过元素名、属性、类名及注释进行指令调用:

    (1)       元素名:上面方法即是通过元素名进行指令调用的

    (2)       属性

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <script src="../angular/angular.js"></script>
    </head>
    <body ng-app="myApp">
      <div runoob-directive></div>
    <script>
        var app = angular.module("myApp", []);
        app.directive("runoobDirective", function() {
            return {
                template : "<h1>自定义指令!</h1>"
            };
        });
    </script>
    </body>
    </html>
    

      

    (3)       类名

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <script src="../angular/angular.js"></script>
    </head>
    <body ng-app="myApp">
       <div class="runoob-directive"></div>
    <script>
        var app = angular.module("myApp", []);
        app.directive("runoobDirective", function() {
            return {
                restrict : "C",
                template : "<h1>自定义指令!</h1>"
            };
        });
    </script>
    <p><strong>注意:</strong> 你必须设置 <b>restrict</b> 的值为 "C" 才能通过类名来调用指令。</p>
    </body>
    </html>
    

      

    (4)       注释

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <script src="../angular/angular.js"></script>
    </head>
    <body ng-app="myApp">
    <!-- directive: runoob-directive -->
    <script>
        var app = angular.module("myApp", []);
        app.directive("runoobDirective", function() {
            return {
                restrict : "M",
                replace : true,
                template : "<h1>自定义指令!</h1>"
            };
        });
    </script>
    <p><strong>注意:</strong> 我们需要在该实例添加 <strong>replace</strong> 属性, 否则评论是不可见的。</p>
    <p><strong>注意:</strong> 你必须设置 <b>restrict</b> 的值为 "M" 才能通过注释来调用指令。</p>
    </body>
    </html>

    Ps:限制使用:通过restrict属性,限制你的指令只能通过特定的方式来调用,restrict的值可以是一下几种:A:作为属性使用; E:作为元素名使用; C作为类名使用; M作为注释使用;   ps:restrict默认值为EA,即可以通过元素名和属性名进行指令调用。

     

    angularjs事件:

    ng-click:angularjs点击事件

    ng-dbl-click:

    ng-mousedown:

    ng-mouseenter:

    ng-mouseleave:

    ng-mousemove:

    ng-keydown:

    ng-keyup:

    ng-keypress:

    ng-change:

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../angular/angular.js"></script>
    </head>
    <body>
       <div ng-app="app" ng-controller="myCtrl">
           <button ng-click="count = count + 1">点我</button>
           <p>{{count}}</p>
       </div>
       <script>
           angular.module('app',[]).controller('myCtrl',function($scope){
               $scope.count = 0;
           });
       </script>
    </body>
    </html>
    
     
    

      

    angularjs验证属性:

    $dirty:

    $invalid:

    $error:

     

    Angularjs全局API(Application Programming Interface):

    (1)       转换

    angular.lowercase():将字符串转换为小写

    angular.uppercase():将字符串转换为大写

    angular.copy():数组或对象深度拷贝

    angular.forEach():对象或数组的迭代函数

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../angular/angular.js"></script>
    </head>
    <body>
        <div ng-app="myApp" ng-controller="myCtrl">
            <p>{{x1}}</p>
            <p>{{x2}}</p>
        </div>
        <script>
            var app = angular.module('myApp',[]);
            app.controller('myCtrl',function($scope){
                $scope.x1 = 'JSON';
                $scope.x2 = angular.lowercase($scope.x1);
            });
        </script>
    </body>
    </html>
    

      

    (2)       比较

    angular.isArray():如果引用的是数组返回true

    angular.isDate():

    angular.isDefined():

    angular.isElement():

    angular.isFunction():

    angular.isNumber():

    angular.isObject():

    angular.isString():

    angular.isUndefined():

    angular.equals():

     

     

    (3)       JSON

    angular.fromJson():反序列化JSON字符串

    angular.toJson():序列化JSON字符串

    (4)       基础

    angular.bootstrap():手动启动angularjs

    angular.element():包裹着一部分DOM element或是HTML字符串,把其作为一个jQuery元素来处理

    angular.module():创建、注册或检索angularjs模块

     

     

    $scope: 应用在html视图与JavaScript控制器之间的纽带,其是一个对象,有可用的方法和属性,可应用在视图和控制器上。当利用angularjs创建控制器时,可以将$scope对对象当作一个参数传递。

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <script src="../angular/angular.js"></script>
    </head>
    <body>
    <div ng-app="myApp" ng-controller="myCtrl">
        <h1>{{carname}}</h1>
    </div>
    <script>
        var app = angular.module('myApp', []);
        app.controller('myCtrl', function($scope) {
            $scope.carname = "Volvo";
        });
    </script>
    <p>控制器中创建一个属性名 "carname",对应了视图中使用 {{ }} 中的名称。</p>
    </body>
    </html>
    

      

    当在控制器中添加$scope对象时,视图可以获取到这些属性,在视图中,不需要添加$scope前缀,直接添加属性名即可。

     

    Angularjs应用组成包括:View(视图),即HTML; Model(模型),当前视图中可用的数据; Controller(控制器),即JavaScript函数,可以添加或修改属性。

     

    scope是模型。Scope是一个JavaScript对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <script src="../angular/angular.js"></script>
    </head>
    <body
    <div ng-app="myApp" ng-controller="myCtrl">
        <input ng-model="name">
        <h1>{{greeting}}</h1>
        <button ng-click='sayHello()'>点我</button>
    </div>
    <script>
        var app = angular.module('myApp', []);
        app.controller('myCtrl', function($scope) {
             $scope.name = "Runoob";
             $scope.sayHello = function() {
             $scope.greeting = 'Hello ' + $scope.name + '!';
            };
        });
    </script>
    <p>当你修改输入框中的值时,会影响到模型(model),当然也会影响到控制器对应的属性值。</p>
    </body>
    </html>
    

     

    service:

    angularjs中,服务是一个函数或对象,可在angularjs应用中使用。有个$location服务,可以返回当前页面的URL地址。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../angular/angular.js"></script>
    </head>
    <body>
      <div ng-app="myApp" ng-controller="myCtrl"> 
          <p>当前页面的URL:</p>
          <h3>{{myUrl}}</h3>
      </div>
      <p>该实例使用了内建的$location服务获取当前页面的URL</p>
      <script>
          var app = angular.module('myApp',[]);
          app.controller('myCtrl',function($scope,$location){
              $scope.myUrl = $location.absUrl();
          });
      </script>
    </body>
    </html>
    

      

     

    Ps:$location服务作为一个参数传递到controller中。若使用它,则需要在controller中定义。

    $location服务,可以使用DOM中存在的对象。

     

    $http服务:服务向服务器发送请求,应用响应服务器传过来的数据。

     

    $timeout服务:对应了js里的window.setTimeout函数

     

    $interval服务对应了js中的window.setInterval。

      

    参考 & 感谢:http://www.runoob.com/angularjs

     

    宝剑锋从磨砺出,梅花香自苦寒来。
  • 相关阅读:
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 Cowboys
    Java实现 蓝桥杯 算法训练 Cowboys
    55. Jump Game
    54. Spiral Matrix
    50. Pow(x, n)
  • 原文地址:https://www.cnblogs.com/haimengqingyuan/p/7398250.html
Copyright © 2011-2022 走看看