1. 程式人生 > 其它 >學習AngularJS有這一篇就好了

學習AngularJS有這一篇就好了

技術標籤:AngularJSangularjsangularjs學習angularjs指令前後端資料互動資料互動

一、AngularJS簡介

  AngularJS 誕生於2009年,由Misko Hevery 等人建立,後為Google所收購。是一款優秀的前端JS框架,已經被用於Google的多款產品當中。AngularJS有著諸多特性,最為核心的是:MVC、模組化、自動化雙向資料繫結、依賴注入等等。
在這裡插入圖片描述

二、AngularJS四大特徵

2.1 MVC模式

  Angular遵循軟體工程的MVC模式,並鼓勵展現,資料,和邏輯元件之間的鬆耦合.通過依賴注入(dependency injection),Angular為客戶端的Web應用帶來了傳統服務端的服務,例如獨立於檢視的控制。 因此,後端減少了許多負擔,產生了更輕的Web應用。

在這裡插入圖片描述
  Model:資料,其實就是angular變數($scope.XX);
  View: 資料的呈現,Html+Directive(指令);
  Controller:操作資料,就是function,資料的增刪改查;

2.2 雙向繫結

  AngularJS是建立在這樣的信念上的:即宣告式程式設計應該用於構建使用者介面以及編寫軟體構建,而指令式程式設計非常適合來表示業務邏輯。框架採用並擴充套件了傳統HTML,通過雙向的資料繫結來適應動態內容,雙向的資料繫結允許模型和檢視之間的自動同步。因此,AngularJS使得對DOM的操作不再重要並提升了可測試性。

在這裡插入圖片描述

2.3 依賴注入

  依賴注入(Dependency Injection,簡稱DI)是一種設計模式, 指某個物件依賴的其他物件無需手工建立,只需要“吼一嗓子”,則此物件在建立時,其依賴的物件由框架來自動建立並注入進來,其實就是最少知識法則;模組中所有的service和provider兩類物件,都可以根據形參名稱實現DI.

2.4 模組化設計

  高內聚低耦合法則
    1)官方提供的模組 ng、ngRoute、ngAnimate
    2)使用者自定義的模組 angular.module(‘模組名’,[ ])

三、入門學習

3.1 angularjs表示式

  表示式的寫法是{{表示式 }} 表示式可以是變數或是運算式
  ng-app 指令 作用是告訴子元素一下的指令是歸angularJs的,angularJs會識別的
  ng-app 指令定義了 AngularJS 應用程式的 根元素。
  ng-app 指令在網頁載入完畢時會自動引導(自動初始化)應用程式。

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>angularjs的表示式</title> <!-- 匯入angularjs的基礎檔案 --> <script src="js/plugins/angularjs/angular.min.js"></script> </head> <body ng-app> <h1>angularjs的表示式</h1> <h2><span>{{</span>具體的表示式<span>}}</span></h2> <h2>算術表示式---{{100+200}}</h2> <h2>關係表示式---{{100 > 200}}</h2> <h2>邏輯表示式---{{(100>200) || (200>100)}}</h2> <h2>邏輯表示式---{{(100>200) && (200>100)}}</h2> </body> </html>

3.2 雙向繫結

  ng-model 指令用於繫結變數,這樣使用者在文字框輸入的內容會繫結到變數上,而表示式可以實時地輸出變數。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>angularjs的雙向繫結</title>
    <!-- 匯入angularjs的基礎檔案 -->
    <script src="js/plugins/angularjs/angular.min.js"></script>
</head>
<body ng-app>
    <h1>angularjs的雙向繫結</h1>
    <h2>雙向--【html頁面元素/angularjs變數】</h2>
    <h2>雙向繫結--將html頁面元素與angularjs中定義的某一個變數關聯起來</h2>
    <h2>雙向繫結效果--1.當html頁面元素中的資料發生變化,那麼與之對應angularjs中定義的變數的資料值就會發生變化;
                      2.當angularjs中定義的變數的資料值發生變化,那麼與之對應的html頁面元素中的資料就會發生變化;
        【同步】
    </h2>
    <h2>ng-model指令--雙向繫結</h2>
    請輸入姓名:<input  type="text" ng-model="myname"/><br>
    輸出姓名:{{myname}}
</body>
</html>

3.3 初始化指令

  如果希望有些變數具有初始值,可以使用ng-init指令來對變數初始化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>angularjs的初始化指令</title>
    <!-- 匯入angularjs的基礎檔案 -->
    <script src="js/plugins/angularjs/angular.min.js"></script>
</head>
<body ng-app ng-init="myname='zhangsan'">
<h1>angularjs的初始化指令【ng-init】</h1>
<h2>作用:在html頁面內開啟的時候需要完成的動作,就要新增得到初始化指令</h2>
<h2>位置:body元素中</h2>
請輸入姓名:<input  type="text" ng-model="myname"/><br>
</body>
</html>

3.4 控制器

  ng-controller用於指定所使用的控制器。
  理解 $ scope:是一個控制器與檢視之間的進行資料互動的橋樑物件。
  $scope 的使用貫穿整個 AngularJS App 應用,它與資料模型相關聯,同時也是表示式執行的上下文.有了 $ scope 就在檢視和控制器之間建立了一個通道,基於作用域檢視在修改資料時會立刻更新 $scope,同樣的 $ scope 發生改變時也會立刻重新渲染檢視.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>angularjs的控制器</title>
    <!-- 匯入angularjs的基礎檔案 -->
    <script src="js/plugins/angularjs/angular.min.js"></script>
    <script>
        //建立模組
        var myapp=angular.module('myapp',[]);
        //建立控制器
        myapp.controller('mycontroller',function ($scope) {
            $scope.sum=function () {
                //parseInt()---將文字資料轉換成數字
                return parseInt($scope.num1)+parseInt($scope.num2);
            }
        });
    </script>
</head>
<body ng-app="myapp" ng-controller="mycontroller">
<h1>angularjs的控制器</h1>
<h2>angularjs的控制器--定義儲存變數和函式</h2>
<h2>1.控制器是需要由模組來建立,因此我們要會建立angularjs模組</h2>
<h2>2.建立模組的格式:angular.module('模組名稱',[引數列表]);</h2>
<h2>3.建立控制器的格式:模組物件.controller('控制器名稱',function($scope){});</h2>
<h2>4.$scope==全域性</h2>
<h2>5.控制器中定義變數:$scope.myname="zhangsan"</h2>
<h2>6.控制器中定義函式:$scope.insert=function(){ };</h2>
第一個運算數字<input  type="text" ng-model="num1"/><br>
第二個運算數字<input  type="text" ng-model="num2"/><br>
加法運算結果:{{sum()}}
</body>
</html>

3.5 事件指令

  ng-click 是最常用的單擊事件指令,再點選時觸發控制器的某個方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>angularjs的點選事件</title>
    <!-- 匯入angularjs的基礎檔案 -->
    <script src="js/plugins/angularjs/angular.min.js"></script>
    <script>
        //建立模組
        var myapp=angular.module('myapp',[]);
        //建立控制器
        myapp.controller('mycontroller',function ($scope) {
            $scope.sum=function () {
                //parseInt()---將文字資料轉換成數字
                $scope.res=parseInt($scope.num1)+parseInt($scope.num2);
            }
        });
    </script>
</head>
<body ng-app="myapp" ng-controller="mycontroller">
<h1>angularjs的點選事件</h1>
<h2>ng-click:點選事件</h2>
<h2>ng-click="函式"</h2>
第一個運算數字<input  type="text" ng-model="num1"/><br>
第二個運算數字<input  type="text" ng-model="num2"/><br>
<input type="button" value="計算加法" ng-click="sum()"/><br>
運算結果:{{res}}
</body>
</html>

3.6 迴圈陣列

  這裡的ng-repeat指令用於迴圈陣列變數。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>angularjs的迴圈</title>
    <!-- 匯入angularjs的基礎檔案 -->
    <script src="js/plugins/angularjs/angular.min.js"></script>
    <script>
        //建立模組
        var myapp=angular.module('myapp',[]);
        //建立控制器
        myapp.controller('mycontroller',function ($scope) {
           //定義一個數組【String】
            $scope.namearray=["zhangsan","lisi","wangwu"];
            //定義一個物件型的陣列【集合】
            $scope.stulist=[
                {stuid:1001,stuname:'zhangsan',stuage:23,stuaddress:'西安'},
                {stuid:1002,stuname:'lisi',stuage:24,stuaddress:'北京'},
                {stuid:1003,stuname:'wangwu',stuage:25,stuaddress:'上海'}
                 ];
        });
    </script>
</head>
<body ng-app="myapp" ng-controller="mycontroller">
<h1>angularjs的迴圈</h1>
<h2>ng-repeat指令用於迴圈陣列/集合資料</h2>
<h2>ng-repeat="變數 in 陣列/集合"</h2>
<h2>遍歷陣列</h2>
<ol>
    <li ng-repeat="name in namearray">{{name}}</li>
</ol>
<h2>遍歷物件陣列[集合]</h2>
<table border="1px" width="300px">
    <tr align="center">
        <td>學生編號</td>
        <td>學生姓名</td>
        <td>學生年齡</td>
        <td>學生地址</td>
    </tr>
    <tr align="center" ng-repeat="student in stulist">
        <td>{{student.stuid}}</td>
        <td>{{student.stuname}}</td>
        <td>{{student.stuage}}</td>
        <td>{{student.stuaddress}}</td>
    </tr>
</table>
</body>
</html>