zoukankan      html  css  js  c++  java
  • angular js 初学

    1 angularJS的一些概念

        AngularJS 通过新的属性和表达式扩展了 HTML。

        AngularJS 是一个 JavaScript 框架,它是一个以Javascript编写的库,它可通过 <script> 标签添加到 HTML 页面。

        Angular Js是一个Javascript框架,

        AngularJS 可以构建一个单一页面应用程序(SPAs:Single Page Applications)。

        注:我们建议把脚本放在 <body> 元素的底部。这会提高网页加载速度,因为 HTML 加载不受制于脚本加载。

        各个 angular.js 版本下载: https://github.com/angular/angular.js/releases

    2 angularJS的历史

        AngularJS 是比较新的技术,版本 1.0 是在 2012 年发布的。

        AngularJS 是由 Google 的员工 Miško Hevery 从 2009 年开始着手开发。

        该项目目前已由 Google 正式支持,有一个全职的开发团队继续开发和维护这个库。

    3 什么是angular 

        AngularJS 使得开发现代的单一页面应用程序(SPAs:Single Page Applications)变得更加容易。

    • AngularJS 把应用程序数据绑定到 HTML 元素。
    • AngularJS 可以克隆和重复 HTML 元素。
    • AngularJS 可以隐藏和显示 HTML 元素。
    • AngularJS 可以在 HTML 元素"背后"添加代码。
    • AngularJS 支持输入验证。

    4 angularJS 配置

         AngularJS 通过 ng-directives 扩展了 HTML。

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

        ng-app 指令定义一个 AngularJS 应用程序。

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

        ng-bind 指令把应用程序数据绑定到 HTML 视图。

    <div ng-app="">
         <p>名字 : <input type="text" ng-model="name"></p>
         <h1>Hello {{name}}</h1>    // 此处为angular表达式用双大括号包裹  
    </div>
       
    注意: 需要引入angularjs插件库 通过javascrit的src属性引入

                    1.ng-app是一个特殊的指令,一个HTML文档只出现一次,如出现多次也只有第一个起作用;ng-app可以出现在html文档的任何一个元素上。

                    2.ng-app作用:告诉子元素指令是属于angularJs。

                    3.ng-app的值可以为空(练习),项目中一定要赋值,后面所说的模块。

          一个页面里创建多个 ng-app 手动加载即可:
    var app1 = angular.module("app1", []); //自动加载
    var app2 = angular.module("app2", []); //手动加载
    // 页面加载完成后,再加载模块 angular.element(document).ready(function() {
    //手动加载myApp2 ng-app
    angular.bootstrap(document.getElementById("myApp2"), ['myApp2'])
    })

    5 angularJS 表达式

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

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

        AngularJS 将在表达式书写的位置"输出"数据。

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

        实例 {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}

            5.1   AngularJS 数字

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

      5.2   AngularJS 字符串

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

     5.3  AngularJS 对象

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

     5.4  AngularJS 数组

    <div ng-app="" ng-init="points=[1,15,19,2,40]">
     
        <p>第三个值为 {{ points[2] }}</p>
     
    </div>

    使用 ng-bind 也可以实现同样的效果

    <div ng-app="" ng-init="points=[1,15,19,2,40]">

    <p>第三个值为 <span ng-bind="points[2]"></span></p>

    </div>

           拓展:AngularJS 表达式 vs JavaScript 表达式   

                    JavaScript 表达式与AngularJS 表达式一样可以包含字母,操作符,变量。

                     AngularJS 表达式可以写在 HTML 中。jascript表达式只能写在script标签中

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

                    AngularJS 表达式支持过滤器,JavaScript 表达式支持正则过滤

    6 angularJS 应用

         AngularJS 模块(Module) 定义了 AngularJS 应用。

         AngularJS 控制器(Controller) 用于控制 AngularJS 应用。

         ng-app指令指明了应用, ng-controller 指明了控制器。

         AngularJS 应用程序由 ng-app 定义。应用程序在 <div> 内运行。

         ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。

         myCtrl 函数是一个 JavaScript 函数。

         AngularJS 使用$scope 对象来调用控制器。

         在 AngularJS 中, $scope 是一个应用对象(属于应用变量和函数)。

         控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。

         控制器在作用域中创建了两个属性 (firstName 和 lastName)。

         ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。

         基本配置如下:     

    <div ng-app="myApp" ng-controller="myCtrl">   <!-- 此处myApp指向模块应用  ng-controller 指令来添加应用的。控制器model中可以有多个controller: -->
     
       名: <input type="text" ng-model="firstName"><br>
       姓: <input type="text" ng-model="lastName"><br>
       <br>
       姓名: {{firstName + " " + lastName}}
     
    </div>
    <script>
    var app = angular.module('myApp', []);   //  此处代码标明创建了一个模块,定义应用为app   myApp指向视图层 
                           // 在模块定义中 [] 参数用于定义模块的依赖关系。
                           // 中括号[]表示该模块没有依赖,如果有依赖的话会在中括号写上依赖的模块名字。
    app.controller('myCtrl', function($scope) { // 给定义的模块绑定控制器 myCtrl // $scope (相当于作用域、控制范围 )用来保存AngularJS Model(模型)的对象。 $scope.firstName= "John"; $scope.lastName= "Doe"; }); </script>

      拓展  关于 controller 中作用域的问题:

           说明:  controller 中,如果局部 $scope 和全局 $rootScope 都存在,且有相同名字的变量,{{变量名}} 指局部变量而不是全局变量,作用域只有当前 controller{{$root.变量名}} 是全局变量,在 ng-app="" 下任何一个 controller 中都能使用。如果没有 $scope, 只有 $rootScope,那么 {{变量名}} 和 {{$root.变量名}} 就没区别了。

    <body ng-app="myApp">
    <div ng-controller="myCtrl">       //输出结果
        {{first}}<br>                 //ctrl局部first
        {{$root.first}}<br>           //全局first
        {{second}}<br>                //全局second
        {{$root.second}}<br>          //全局second
    </div>
    <br>
    <br>
    <div ng-controller="myCtrl2">
        {{first}}<br>                //全局first
        {{$root.first}}<br>          //全局first
        {{second}}<br>              //ctrl2局部second 
        {{$root.second}}            //全局second
    </div>
    <script>    
    var app = angular.module('myApp', []);    
    app.controller('myCtrl', function ($scope,$rootScope) {
            $scope.first = 'ctrl局部first';
            $rootScope.first = '全局first';
        });    
    app.controller('myCtrl2', function ($scope,$rootScope) {
            $scope.second = 'ctrl2局部second';
            $rootScope.second = '全局second';    
    });
    </script>

    7 angularJS 指令  

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

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

       AngularJS 允许你自定义指令。

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

       ng-app 指令初始化一个 AngularJS 应用程序。ng-app 指令告诉 AngularJS,元素是 AngularJS 应用程序 的"所有者"。

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

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

      

        

  • 相关阅读:
    Vue-router笔记
    webpack及其配置
    高阶函数+组件化开发
    Es6语法+v-on参数相关+vue虚拟dom
    英语资源及其APP推荐
    Qt获取ip地址
    QT创建和使用动态链接库
    error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”
    Vue|VUE router 导航重复点击报错的问题解决方案
    Vue|触发路由跳转
  • 原文地址:https://www.cnblogs.com/zxbky/p/9695543.html
Copyright © 2011-2022 走看看