angularjs學習第七天筆記(系統指令學習)

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

angularjs指令(directive)中的系統自定義指令學習研究 ...


  您好,接著在昨天對簡單指令學習瞭解以後,今天開始學習瞭解angularjs中的系統指令

  系統指令大部分都是以ng開始,這也是為什麼在自定義指令命名時不要以ng開始的原因所在

  系統指令在學習了分成兩個部分進行學習:基礎指令、在指令中使用子作用域

  第一、基礎指令

    基礎指令由包括bool型和類bool型兩類

    bool型指令,就是其值是一bool值(true or false)

    1.1、bool指令包括:

    ng-disabled:主要控制控制項是否可操作

    ng-readonly:控制文本輸入框為只讀

    ng-check:控制選擇框是否被選中

    ng-selected:控制下拉框選中項

    1.2、類布爾指令包括:

    ng-href 指令:與html中的href對應,其好處是當為給其賦值時

    ng-src指令:與html中的src對應,表達式生效之前不要載入圖像: 

    一個簡單的練習:

    

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
    <div>
        <h1> ng-disabled指令</h1>
        <input type="text" ng-disabled="isDisable" placeholder="3s後我才可操作" />
    </div>

    <div>
        <h1> ng-readonly指令</h1>
        <input type="text" ng-model="isReadonly" placeholder="只要我不空下麵就不可操作" />
        <input type="text" ng-readonly="isReadonly" placeholder="前面不為空我就不可操作啦" />
    </div>

    <div>
        <h1> ng-check指令</h1>
        是否選中王先生<input type="checkbox" ng-model="isSelected" value="是否選中王先生" />
        <select>
            <option>許先生</option>
            <option ng-selected="isSelected">王先生</option>
        </select>
    </div>
</body>
</html>
<script src="Scripts/angular.js"></script>
<script type="text/javascript">
    var app = angular.module("myApp", []);
    app.controller("myContro", function ($scope, $timeout) {
        $scope.isDisable = true;
        $timeout(function () {
            ///// 3秒後開啟控制項可操作
            $scope.isDisable = false;
        }, 3000)
    });
</script>

    

    第二、在指令中使用子作用域 

      指令中使用子作用域,其簡單的理解就是,其指令會創建一個隔離的作用子域,基礎父作用域。

      1、ng-app:DOM元素將被標記為$rootScope的起始點

         在JavaScript代碼中通過run方法來訪問$rootScope。 

      2、ng-controller:控制器,創建一個子域

      3、ng-include :其實現功能效果就是,模塊化載入外部的模塊

       使用註意要點:

        a.ng-include,如果單純指定地址,必須要加引號

        b.ng-include,載入外部html,script標簽中的內容不執行,不能載入,如果需要控制器處理需要在主頁中註冊

        c.ng-include,載入外部html中含有style標簽樣式可以識別

        d. ng-inclue,記載外部html中的link標簽可以載入

       使用距離:

        <div ng-include="/myTemplateName.html"    

           ng-controller="MyController"    

           ng-init="name = 'World'">    

          Hello {{ name }} </div> 

       4、ng-switch :根據條件選擇性的載入

        格式為:ng-switch on="名稱"

            ng-switch-default:預設處理

            ng-switch-when='具體的值'

        來一個練習:      

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
    <div>
        <h1>  ng-switch指令</h1>
        <select ng-model="selectValue">
            <option value="">請選擇</option>
            <option value="xu">許先生</option>
            <option value="wang">王先生</option>
        </select>
        <div ng-switch on="selectValue">
            <div ng-switch-default>請先選擇</div>
            <div ng-switch-when="xu">你選擇的許先生</div>
            <div ng-switch-when="wang">你選擇的王先生</div>
        </div>
    </div>
</body>
</html>
<script src="Scripts/angular.js"></script>
<script type="text/javascript">
    var app = angular.module("myApp", []);
</script>

 

  5、ng-if :根據條件選擇性的是否載入

   ng-if和ng-show、ng-hide都能夠實現標簽的顯示隱藏

   但是其有本質的區別,ng-if是直接不載入,而後者是通過css樣式控制

   代碼實例:

    <div>

      <h1> ng-if指令</h1>
      是否顯示<input type="checkbox" ng-model="isShow" />
      <div ng-if="isShow">
        需要顯示還是隱藏我,你們自己控制吧!
      </div>
    </div>

  6、ng-repeat:迴圈遍歷一個集合數據,根據模板生成數據列

    幾個關鍵屬性值: 

    $index:遍歷的進度(0...length-1)
    $first:當元素是遍歷的第一個時值為true
    $middle:當元素處於第一個和後元素之間時值為true
    $last:當元素是遍歷的後一個時值為true
    $even:當$index值是偶數時值為true
    $odd:當$index值是奇數時值為true

    ng-repeat在數據列表顯示中用的比較多,在實際使用中可以根據其關鍵字進行樣式設置展示

    特別說明:集合數據的開始坐標是0,所以在處理奇偶數時要註意

    來一個練習:

    

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
     <style type="text/css">
        .even {
            background-color: #b6ff00;
        }

        .odd {
            background-color: #808080;
        }
    </style>

    <div>
        <h1>ng-repeat指令</h1>
        <div ng-repeat="user in uesrList">
            <div style="width:400px;height:40px;line-height:40px;" ng-class="even:!$even;odd:!odd">您好{{user.name}}</div>
        </div>
        <div>
            姓名:<input type="text" ng-model="addName" placeholder="請輸入新增的姓名" /><br />
            <input type="button" ng-disabled="!addName" value="新增" ng-click="addNewName()" />
        </div>
    </div>

</body>
</html>
<script src="Scripts/angular.js"></script>
<script type="text/javascript">
    var app = angular.module("myApp", []);
    app.controller("myContro", function ($scope, $timeout) {
        $scope.addName = "";
        $scope.uesrList = [{ name: "許先生" }, { name: "趙先生" }, { name: "劉先生" },]
        $scope.addNewName = function () {
            $scope.uesrList.push({ name: $scope.addName });
        };
    });
</script>

  

  7、{{}}與ng-bind指令:兩個指令都是實現數據綁定

   區別:由於{{}}綁定數據時,會因為載入後未渲染屬性而導致瀏覽器閃爍,ng-bind不會閃爍

      ng-bind只能執行單個變數綁定

        但是可以藉助:ng-bind-template定義一個模板實現多變數綁定

        如:<h1 ng-bind-template ="{{text}} {{text}}" ></h1>

 

 

    今天就到此為止,明天繼續研究指令的生深入研究學習

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、ENGINE=InnoDB 資料庫存儲引擎,DEFAULT 預設,CHARSET=utf8 資料庫字元編碼 2、資料庫的存儲引擎, mysql中engine=innodb和engine=myisam的區別 myisam:讀取速度比較快,不占用大批量資源,但是又兩個缺點,1、不支持事物,2、容錯不 ...
  • 大數據具體是怎樣的存在,不同的人,不同的立場有不同的看法。也可以抽象為大數據不僅僅是一種概念那麼簡單,更是一種方法。最終的目的就是通過分析和挖掘全量的非抽樣的數據輔助服務決策。 很對人對於大數據沒有清晰的認識,大數據一方面是基於海量的數據,另一方面最為重要的最有就是能我們是生活變得更加方便,能夠依據 ...
  • 1、創建序列 2、序列初始化存儲過程 create procedure proDemo as begin alter sequence dbo.序列名 restart with 0; end 3、創建定時任務自動執行序列初始化存儲過程。 ...
  • 當我們在佈局文件中設置View為wrap_conten的時候,不可以直接使用 來獲取寬高,使用該方法獲取到的是0,應該使用最上面的方法。 ...
  • 作為前端最火的構建工具,是前端自動化工具鏈 最重要的部分 ,使用門檻較高。本系列是筆者自己的學習記錄,比較基礎,希望通過 問題 + 解決方式 的模式,以前端構建中遇到的具體需求為出發點,學習 工具中相應的處理辦法。(本篇中的參數配置及使用方式均基於 ) [TOC] 一. Assets資源的基本處理需 ...
  • 前言:在瞭解HTML之前先簡約概述一下web的服務本質 Web服務本質 瀏覽器發請求 --> HTTP協議 --> 服務端接收請求 --> 服務端返迴響應 --> 服務端把HTML文件內容發給瀏覽器 --> 瀏覽器渲染頁面 HTML是什麼? 超文本標記語言(Hypertext Markup Lang ...
  • bootstrap簡潔、直觀、強悍的前端開發框架,讓web開發更迅速、簡單。 在這篇文章中,我們已經編製了5款最好的 Bootstrap 4.0 主題模板清單,讓您可以用在下一個項目中,我們希望你能找到有用的。這些主題包含了所有必要的 HTML 和 CSS 為基礎的設計模板的版式,表單,按鈕,導航和 ...
  • 思維導圖不得不說是學習及溫習的極佳方法,這裡轉載一波網上他人的精品JS思維導圖十張,共同學習,如有冒犯原著可聯繫本人及時處理。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...