angularjs學習第一天筆記

来源:https://www.cnblogs.com/xiaoXuZhi/archive/2018/08/20/angularjs.html
-Advertisement-
Play Games

angularjs學習筆記,系統學習整理angular。angularjs、$scope、$parse、$interpolate ...


    您好,我是一名後端開發工程師,由於工作需要,現在系統的從0開始學習前端js框架之angular,每天把學習的一些心得分享出來,如果有什麼說的不對的地方,請多多指正,多多包涵我這個前端菜鳥,歡迎大家的點評與賜教。謝謝!

  第一天,簡單瞭解了其中中一些基本概念

  1、angularjs的解釋

    angularjs是Google旗下的一個前端js框架,其與html、css、js配合使用,從而使得web開發更加的簡單快捷。

    angularjs有4大特性:MVC、模塊化、指令系統、雙向數據綁定。在學習過程中也是圍繞這幾點進行系統的學習。

  2、angularjs創建一個頁面的簡單特性

    a.首先要引用angularjs類庫

    b.在html頁面要標註ng-app屬性,該標註表示所在範圍內的DOM結構才收angularjs所控制

    c.數據綁定模塊的預設格式為{{參數名稱}},當然這個格式是可以自定義設置的

    d.第DOM標簽添加angular屬性時,都是以ng-開始

    e.angular框架中數據模型數據的變更會動態的綁定顯示到view中

    f.angular框架外的js修改數據模型的變化不會動態的綁定顯示到view中,需要藉助$apply手動更新

    f.Scope提供$watch方法監視Model的變化

    g.Scope提供$apply方法傳播Model的變化

  3、創建一個簡單angularjs頁面實現數據綁定

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body ng-app="myApp">
    <div ng-controller="myContro">
        <div>名字:<input type="text" ng-model="name" placeholder="請輸入姓名" /></div>
        <div>你輸入的姓名為:【{{name}}】請核對</div>
        <div ng-click="clear()">清空輸入</div>
    </div>
</body>
</html>
<script src="../Scripts/angular.js"></script>
<script type="text/javascript">
    var myApp = angular.module("myApp", []);
    myApp.controller("myContro", function ($scope) {

        //// 清空輸入函數
        $scope.clear = function () {
            $scope.name = "";
        }

        //// 2s後直接給name賦值,但是試圖不會實時更新
        setTimeout(function () {
                $scope.name = "開始輸入";
        }, 2000);

        //// 10s後給name賦值,並手動
        setTimeout(function () {
            $scope.$apply(function () {
                $scope.name = "輸入結束";
            });
        }, 10000);

        //// $watch監控模型name中字的改變
        $scope.$watch("name", function (newValue, oldValue) {
            if (newValue != oldValue) {
                console.log("name值又發生了改變:改變前的值:【" + oldValue + "】、改變後的值【" + newValue + "");
            }
        });
    });
</script>

  4、模塊

    為了代碼的高效,整潔,提高代碼的可重用性、可讀性,angular引入了模塊的概念module,簡單的裡面,模塊就是講頁面代碼分割成不同的獨立模塊。

    一個應用可以包含多個模塊,各個模塊包含其核心的邏輯代碼,不同模塊間相互獨立。一個ng-app代表一個模塊。

    AngularJS允許我們使用angular.module()方法來聲明模塊,這個方法能夠接受兩個參數, 第一個是模塊的名稱,第二個是依賴列表,也就是可以被註入到模塊中的對象列表。 angular.module('myApp', []);

  5、作用域

    angular作用域是其最主要核心特征之一,通過$scope來表示。作用如下:

      a.應用的作用域是和應用的數據模型相關聯的

      b.同時作用域也是表達式執行的上下文。

      c.$scope 對象是定義應用業務邏輯、控制器方法和視圖屬性的地方。

      d.作用域是視圖和控制器之間的膠水

      e.$scope對象就是一個普通的JavaScript對象,我們可以在其上隨意修改或添加屬性。 

      g.$scope也有父子級之分,和麵向對象的類的繼承一樣,子級的$scope繼承父級的$scope,其中跟$scope表示為:$rootScope

      h.提供觀察者以監視數據模型的變化

      i.可以將數據模型的變化通知給整個應用,甚至是系統外的組件

      j.可以進行嵌套,隔離業務功能和數據

      k.給表達式提供運算時所需的執行環境

  6、控制器

    控制器的關鍵詞為ng-controller,其作用還是講頁面邏輯根據功能模塊分割中更小模塊。

    控制器是可以嵌套的,作用域也是嵌套的

    定義使用方式如下:

    var app = angular.module('模塊名稱', []);

    app.controller('控制器名稱', function($scope) {  

      控制器內的業務邏輯代碼...

     });

   7、表達式

    angular的表達式主要學習兩個表達式:解析達式,關鍵詞( $parse)、插值字元串表達式,關鍵詞( $interpolate)

 

    a.解析達式,關鍵詞( $parse),其結果是一個函數,也就是執行一個邏輯運算表達式

    特征:解析異常不會拋出異常

    代碼實例:

      

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
    <div>
        表達式:<input type="text" ng-model="expression" placeholder="請輸入表達式"/>
    </div>
    <div>
        <input type="button" value="開始運算" ng-click="calculat()"/>
    </div>
    <div>表達式運算結果:{{reult}}</div>
</body>
</html>
<script src="../Scripts/angular.js"></script>
<script type="text/javascript">
    var app = angular.module("myApp", []);
    app.controller("myContro", function ($scope, $parse) {
        $scope.expression = "";
        $scope.reult = "";
        $scope.calculat = function () {
            $scope.reult = $parse($scope.expression)($scope); 
        }
    });
</script>

 

    b.插值字元串表達式,關鍵詞( $interpolate)

       簡單理解就是格式化字元串,通過{{站位字元串名稱}}對字元串解析站位,然後通過關鍵詞$interpolate返回的函數對站位字元串名稱賦值,得到最終的字元串。

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
    <div>
        表達式:<input type="text" ng-model="name" placeholder="請輸入名稱" />
    </div>
    <div>
        <input type="text"  multiple="" ng-model="textValue"/>
    </div>
    <div>預覽:{{reviewReult}}</div>
</body>
</html>
<script src="../Scripts/angular.js"></script>
<script type="text/javascript">
    var app = angular.module("myApp", []);
    app.controller("myContro", function ($scope, $interpolate) {
        $scope.name = "";
        $scope.textValue = "";
        $scope.reviewReult = "";

        $scope.reviewReultTemp = "{{name}},您好,{{textValue}}";
        var template = $interpolate($scope.reviewReultTemp); 
        $scope.$watch("name", function (newValue, oldValue, ) {
            if (newValue != oldValue) {
                $scope.reviewReult = template({ name: $scope.name, textValue: $scope.textValue});
            }
        });
    });
</script>

 

今天就到此為止,明天我們繼續,加油!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近很多人都想學習大數據開發,但是卻不知道如何開始學習,今天軟妹子專門整理了一份針對大數據初學者的大數據開發學習路線。 下麵分十個章節來說明大數據開發要學習的內容: 以上就是一個大數據新手,想要學會大數據開發,需要學習的內容,大數據學習是一個持續的過程,只要用心學,沒有學不會的東西哦! 推薦一個大數 ...
  • Oracle資料庫的管理相較於其他資料庫,是比較麻煩的,客戶端工具的安裝都要花一些時間,目前有一款treesoft軟體,通過網頁的方式管理Oracle。 功能包括:資料庫的展示,庫表的展示,表欄位結構的展示, SQL語句的線上編輯批量執行,表結構的線上設計維護,數據的線上編輯維護,數據可視化,數據定 ...
  • Android系統的運行時庫層代碼是用C++來編寫的,用C\++ 來寫代碼最容易出錯的地方就是指針了,一旦使用不當,輕則造成記憶體泄漏,重則造成系統崩潰。不過系統為我們提供了智能指針,避免出現上述問題,本文將系統地分析Android系統智能指針(輕量級指針、強指針和弱指針)的實現原理。 在使用C++來 ...
  • TextView EditText Button imageView Spinner下拉列表 RadioGroup(覆選框) / Checkbox(單選框) ProgressBar進度條 RatingBar星級控制項 SeekBar進度條控制項 ...
  • "Android項目刮刮獎詳解(一)" 前言 上期我們簡單地實現了一個畫板的功能,用戶可以在上面亂寫亂畫,其實,刮刮獎也是如此,用戶刮獎的時候也是亂寫亂畫的。 刮刮獎原理 一共有兩層畫布,底層畫布存放中獎信息的圖片,上層畫布則是一個遮蓋層,我們將底層畫布成為信息層,上層畫布稱作為遮蓋層。 用戶再遮蓋 ...
  • Element.getBoundingClientRect()返回元素的大小及相對於視窗的位置 語法: rectObject=object.getBoundingClientRect(); 返回值是一個DOMRect對象,即DOMRect={x:scrollLeft,y:scrollY,width: ...
  • css sprites:精靈圖(雪碧圖):把一堆小圖片整合在一張大圖上,通過背景圖片相關設置(背景圖片、背景圖是否重覆、背景圖定位),顯示圖片,減輕伺服器對圖片的請求數量 優點: 1、減少網頁的HTTP請求,提高頁面性能 2、圖片命名上的困擾 3、更換風格方便 缺點: 1、必須限定容器大小,符合背景 ...
  • 一般性的,當我們需要載入js文件的時候都會使用script標簽來實現,類似於如下代碼: 代碼如下: <script type="text/javascript" src="example.js"></script> 但是直接使用script標簽來載入js文件會有如下一些缺點: 1.嚴格的讀取順序。由 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...