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

     

    宝剑锋从磨砺出,梅花香自苦寒来。
  • 相关阅读:
    ubuntu中,终端命令行快速打开html文件方法
    Python清空文本内容的两种方法
    科大教学日历
    MJ瀑布流学习笔记
    iOS搜索框
    异步IO
    yield
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    15个常用的javaScript正则表达式
    Linux 升级 Python 至 3.x
  • 原文地址:https://www.cnblogs.com/haimengqingyuan/p/7398250.html
Copyright © 2011-2022 走看看