1. 程式人生 > >Angularjs系列之常用內建指令

Angularjs系列之常用內建指令

2.4.1.    常用內建指令

常用內建指令有一些獨特的性質。雖然可用表示式生成HTML程式碼從而與它們等效,但這些做法都是不推薦的。

ng-href

當使用當前作用域中的屬性動態建立URL時,應該用ng-href代替hrefAngular.js表示式可以設定大部分HTML元素的屬性或者值,但單獨設定錨鏈接的href屬性是不可以的。這裡的潛在問題是當用戶點選一個由插值動態生成的連結時,如果插值尚未生效,將會跳轉到錯誤的頁面(通常是404)。

ng-src

ng-href同理,AngularJS會告訴瀏覽器在 ng-src 

對應的表示式生效之前不要載入影象,因為生效之前載入的圖片是無效的。

ng-disabled

使用 ng-disabled 可以把 disabled 屬性繫結到各表單輸入欄位上。當寫普通的HTML輸入欄位時,如果在元素標籤上出現了 disabled 屬性就會禁用這個輸入欄位。

ng-checked

標準的 checked 屬性是一個布林屬性,不需要進行賦值。通過 ng-checked 將某個表示式同是否出現checked屬性進行繫結。要與ng-model聯合使用才有效果。

ng-readonly

同其他布林屬性一樣,HTML定義只會檢查 readonly 屬性是否出現,而不是它的實際值。通過 ng-readonly 可以將某個返回真或假的表示式同是否出現 readonly 屬性進行繫結:

ng-selected

可以對是否出現 option 標籤的 selected 屬性進行繫結。

ng-include

載入、編譯幷包含外部HTML片段到當前的應用中。模板的URL被限制在與應用文件相同的域和協議下,可以通過白名單或包裝成被信任的值來突破限制。更進一步,需要考慮跨域資源共享(

Cross-Origin Resource SharingCORS)和同源規則(Same Origin Policy)來確保模板可以在任何瀏覽器中正常載入。例如,所有瀏覽器都不能進行跨域的請求,部分瀏覽器也不能訪問file://協議的資源

ng-switch

 ng-switch-when  on="propertyName" 一起使用,可以在 propertyName 發生變化時渲染不同指令到檢視中。

ng-if

根據表示式的值在DOM中生成或移除一個元素。同 no-show  ng-hide 指令最本質的區別是,它不是通過CSS顯示或隱藏DOM節點,而是真正生成或移除節點。

ng-repeat

遍歷一個集合或為集合中的每個元素生成一個模板例項。集合中的每個元素都會被賦予自己的模板和作用域。同時每個模板例項的作用域中都會暴露一些特殊的屬性。$index :遍歷的進度(0... length-1 )。$first:當元素是遍歷的第一個時值為 true$middle:當元素處於第一個和最後元素之間時值為 true$last:當元素是遍歷的最後一個時值為true$even:當 $index 值是偶數時值為 true $odd :當 $index 值是奇數時值為true

ng-init

在指令被呼叫時設定內部作用域的初始狀態。

ng-bind

儘管可以在檢視中使用 {{ }} 模板語法(AngularJS內建的方式),我們也可以通過 ng-bind指令實現同樣的行為。內容會被當作子文字節點渲染到含有 ng-bind 指令的元素內。

ng-cloak

除使用 ng-bind 來避免未渲染元素閃爍,還可以在含有 {{ }} 的元素上使用 ng-cloak 指令。ng-cloak 指令會將內部元素隱藏,直到路由呼叫對應的頁面時才顯示出來。

ng-bind-template

 ng-bind 指令類似, ng-bind-template 用來在檢視中繫結多個表示式。

ng-model

 inputselecttext area 或自定義表單控制元件同包含它們的作用域中的屬性進行繫結。它可以提供並處理表單驗證功能,在元素上設定相關的CSS類(ng-validng-invalid等),並負責在父表單中註冊控制元件。

ng-show/ng-hide

根據所給表示式的值來顯示或隱藏HTML元素。當賦值給 ng-show 指令的值為 false 時元素會被隱藏。類似地,當賦值給 ng-hide 指令的值為 true 時元素也會被隱藏。

ng-change

在表單輸入發生變化時計算給定表示式的值。因為要處理表單輸入,這個指令要和 ngModel 聯合起來使用。

ng-form

在一個表單內部巢狀另一個表單。普通的HTML  <form> 標籤不允許巢狀,但ng-form 可以。內部所有的子表單都合法時,外部的表單才會合法。CSS類會根據表單的驗證狀態自動設定:表單合法時設定 ng-valid;表單不合法時設定 ng-invlid;表單未進行修改時設定 ng-pristion;表單進行過修改時設定 ng-dirty

Angular不會將表單提交到伺服器,除非它指定了action屬性。要指定提交表單時呼叫哪個JavaScript方法,使用下面兩個指令中的一個。ng-submit:在表單元素上使用。ng-click:在第一個按鈕或submit型別(input[type=submit])的輸入欄位上使用。

ng-click

指定一個元素被點選時呼叫的方法或表示式。

ng-select/ng-options

將資料同HTML <select> 元素進行繫結。這個指令可以和 ng-model 以及ng-options 指令一同使用,ng-options 的值可以是一個內涵表示式(comprehension expression),它可以接受一個數組或物件,並對它們進行迴圈,將內部的內容提供給select 標籤內部的選項。陣列作為資料來源:用陣列中的值做標籤;用陣列中的值作為選中的標籤;用陣列中的值做標籤組;用陣列中的值作為選中的標籤組。物件作為資料來源:用物件的鍵值(key-value)做標籤;用物件的鍵值作為選中的標籤;用物件的鍵值作為標籤組;用物件的鍵值作為選中的標籤組。

ng-class

style內不能使用angularjs表示式。使用 ng-class 動態設定元素的類,方法是繫結一個代表所有需要新增的類的表示式。重複的類不會新增。當表示式發生變化,先前新增的類會被移除,新類會被新增。ng-class-evenng-class-oddAngularJS內建支援奇偶行不同外觀的樣式,內建CSS樣式名是.even.odd。程式碼正規化:

ng-class="{CSS樣式名:關係表示式,...}"

注意只有一個尖括號,不能不寫尖括號,也不能寫兩個尖括號。

ng-style

把鍵值符合層疊樣式表的物件賦給style

ng-submit

將表示式同 onsubmit 事件進行繫結。這個指令同時會阻止預設行為(傳送請求並重新載入頁面),除非表單不含有 action 屬性。

ng-attr-(suffix)

AngularJS編譯DOM時會查詢花括號 {{ some expression }} 內的表示式。這些表示式會被自動註冊到 $watch 服務中並更新到 $digest 迴圈中,成為它的一部分。有時瀏覽器會對屬性會進行很苛刻的限制。SVG就是一個例子。

<svg>

<circle cx="{{ cx }}"></circle>

</svg>

執行上面的程式碼會丟擲一個錯誤,指出我們有一個非法屬性。可以用 ng-attr-cx 來解決這個問題。注意, cx 位於這個名稱的尾部。在這個屬性中,通過用 {{ }} 來寫表示式,達到前面提到的目的。

<svg>

<circle ng-attr-cx="{{ cx }}"><circle>

</svg>

示例工程:T91

HTML程式碼:

<!DOCTYPE html>

<html ng-app="myApp">

<head lang="en">

    <meta charset="UTF-8">

    <title>T91</title>

    <script type="text/javascript" src="../vendor/angular.js"></script>

    <script type="text/javascript" src="../controllers/hello.js"></script>

</head>

<body ng-controller="HelloController">

<h1 align="center">

    AngularJS常用內建指令

</h1>

<table border="1px" cellspacing="0" cellpadding="5" rules="all" style="border:solid 1px #0000FF" width="100%" align="center">

    <tr>

        <td width="25%" align="right">連結:</td>

        <td width="75%">

            當錨鏈接的連結指向的是作用域的變數時,錯誤的用法:<a href="{{href1}}">我的部落格</a></li>

            正確的用法:<a ng-href="{{href2}}">我的部落格</a>

        </td>

    </tr>

    <tr>

        <td align="right">圖片:</td>

        <td valign="center">

            <div style="height: 64px;vertical-align: middle;line-height: 64px;float:left">這個後臺報錯:</div>

            <img style="float: left;" width="64px" height="64px" src="{{imgSrc1}}">

            <div style="height: 64px;vertical-align: middle;line-height: 64px;float:left">,沒問題的:</div>

            <img width="64px" height="64px" ng-src="{{imgSrc2}}">

        </td>

    </tr>

    <tr>

        <td align="right">啟用與禁用:</td>

        <td>

            <button style="width:80px;height: 30px;" ng-click="onButton1Clicked(this)" ng-disabled="isButton1Disabled">{{button1Tip}}</button>

        </td>

    </tr>

    <tr>

        <td align="right">只讀</td>

        <td><textarea style="width:98%" rows="5" ng-readonly="isTextarea1Readonly"></textarea></td>

    </tr>

    <tr>

        <td align="right">複選框的值:</td>

        <td><input type="checkbox"

                   value="再點我一下"

                   ng-init="checkbox1Value=true"

                   ng-model="checkbox1Value"

                   ng-checked="checkbox1Value"></td>

    </tr>

    <tr>

        <td align="right">下拉列表框:</td>

        <td>

            <label>選中橘子:<input type="checkbox" ng-model="isSelectedSecond"></label>

            <select ng-readonly="true" ng-disabled="true">

                <option>蘋果</option>

                <option ng-selected="isSelectedSecond" >橘子</option>

                <option>桃子</option>

            </select>

        </td>

    </tr>

    <tr>

        <td align="right">包含網頁:</td>

        <td>

            <div ng-include="include.html" ng-controller="IncludeController" ng-init="name='李婷'">

                你好,{{name}}

            </div>

        </td>

    </tr>

    <tr>

        <td align="right">ng-switch</td>

        <td>

            <input type="text" ng-model="person1.name" style="float: left;"/>

            <div ng-switch on="person1.name" style="float: left;">

                <span ng-switch-default>勝利者是:</span>

                <span ng-switch-when="李婷">{{ person1.name }}</span>

            </div>

        </td>

    </tr>

    <tr>

        <td align="right">ng-if</td>

        <td>

            <button style="float:left" ng-click="onNgif1Clicked()">增加</button>

            <span style="float:left">{{ngif1}}</span>

            <div ng-if="ngif1%2==0" style="float:left;color:blue">當數字是偶數的時候你才看得見我。</div>

        </td>

    </tr>

    <tr>

        <td align="right">ng-repeat</td>

        <td>

            <table width="80%" border="0" cellpadding="0" cellspacing="0">

                <tr>

                    <th>序號</th>

                    <th></th>

                    <th>第一個</th>

                    <th>中間</th>

                    <th>最後</th>

                    <th>偶數</th>

                    <th>奇數</th>

                </tr>

                <tr ng-repeat="ng in ngrepeat1">

                    <td align="center">{{$index}}</td>

                    <td align="center">{{ng}}</td>

                    <td align="center">{{$first}}</td>

                    <td align="center">{{$middle}}</td>

                    <td align="center">{{$last}}</td>

                    <td align="center">{{$even}}</td>

                    <td align="center">{{$odd}}</td>

                </tr>

            </table>

        </td>

    </tr>

    <tr>

        <td align="right">ng-init</td>

        <td><p ng-init="nginit1='你好,我在HTML中初始化的'">{{nginit1}}</p></td>

    </tr>

    <tr>

        <td align="right">ng-bind</td>

        <td><p ng-bind="ngbind1"></p></td>

    </tr>

    <tr>

        <td align="right">ng-cloak</td>

        <td><p ng-cloak>{{ngcloak1}}</p></td>

    </tr>

    <tr>

        <td align="right">ng-bind-template</td>

        <td><p ng-bind-template="{{ngtemplate1}}{{ngtemplate2}}"></p></td>

    </tr>

    <tr>

        <td align="right">ng-show/ng-hide</td>

        <td>

            <span ng-show="ngshow1">你好</span><button ng-click="onNgshow1Clicked()" style="width:80px;height: 30px;">切換</button>

            <span ng-hide="nghide1">ng-showng-hide</span><button ng-click="onNghide1Clicked()" style="width:80px;height: 30px;">顯隱</button>

        </td>

    </tr>

    <tr>

        <td align="right">ng-options1</td>

        <td><div>

            <select ng-model="options1"

                    ng-options="options1.name for options1 in ngoptions1">

                <option value="">選擇一個城市</option>

            </select>

            你最喜歡的城市: {{ options1.name }}

        </div></td>

    </tr>

    <tr>

        <td align="right">ng-attr-(stuff)</td>

        <td>

            <table>

                <tr><td>

                    <svg width="300" height="100" version="1.1" >

                        <circle cx="{{ngstuff1}}" cy="50" r="40" stroke="black"  stroke-width="2" fill="red" />

                    </svg>

                </td><td>

                    <svg width="300" height="100" version="1.1" >

                        <circle ng-attr-cx="{{ngstuff1}}" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />

                    </svg>

                </td></tr>

            </table>

        </td>

    </tr>

</table>

</body>

</html>

JS程式碼:

var module=angular.module("myApp",[]);

 

module.controller("HelloController",function($scope,$timeout){

    $scope.button1Tip="點我試試";

    $scope.isButton1Disabled=false;

    $scope.isTextarea1Readonly=false;

    $scope.checkbox1Value=false;

    $scope.isSelectedSecond=false;

    $scope.person1={

        name:""

    };

    $scope.ngif1=1;

    $scope.onButton1Clicked=function(dom){

        $scope.href1="http://blog.csdn.net/caoshiying?viewmode=contents";

        $scope.href2=$scope.href1;

        $scope.imgSrc1="../images/ghl.jpg";

        $scope.imgSrc2=$scope.imgSrc1;

        console.log("已設定連結。");

 

        $scope.isButton1Disabled=true;

        $scope.isTextarea1Readonly=true;

        $scope.button1Tip="不理你。";

    };

 

    $scope.$watch("checkbox1Value",function(){

        console.log("複選框的值:"+$scope.checkbox1Value);

    });

    $scope.onNgif1Clicked=function(){

        $scope.ngif1+=1;

    };

    $scope.ngrepeat1=["","","","",""];

    $scope.ngbind1="我可以賦值為InnerHTML";

    $scope.ngcloak1="我在路由呼叫的時候顯示的。"

    $scope.ngtemplate1="你好,";

    $scope.ngtemplate2="世界,template bind";

    $scope.ngshow1=true;

    $scope.nghide1=true;

    $scope.onNgshow1Clicked=function(){

相關推薦

Angularjs系列常用指令

2.4.1.    常用內建指令 常用內建指令有一些獨特的性質。雖然可用表示式生成HTML程式碼從而與它們等效,但這些做法都是不推薦的。 ng-href 當使用當前作用域中的屬性動態建立URL時,應該用ng-href代替href。Angul

大資料入門教程系列Hive函式及自定義函式

本篇文章主要介紹Hive內建函式以及自定義UDF函式和UDFT函式,自定義UDF函式通過一個國際轉換中文的例子說明。 操作步驟: ①、準備資料和環境 ②、演示Hive內建函式 ③、自定義UDF函式編寫、演示   詳細步驟: 一、準備資料和

angular.js常用指令

**指令,我將其理解為AngularJS操作HTML element的一種途徑。 AngularJS 指令是擴充套件的 HTML 屬性,帶有字首 ng-。** angularjs指令: 1.ngApp 寫法:ng-app ng-app 指令初

python路--常用模組

1. 簡單的瞭解模組   你寫的每一個py檔案都是一個模組. 還有一些我們一直在使用的模組.   buildins  內建模組. print, input.   random  主要是和隨機相關的的內容     random() 隨機小數     uninform(a,b) 隨機小

ECMAScript 6 學習系列課程 (ES6 常用方法的使用)

在編寫Javascript的過程,我們經常會用到陣列過濾,字串等相關操作,比如會用到filter等方法,在ES6中同樣新增了很多內建方法,下面我們來了解一下。 Finding [ 1, 3, 4, 2 ].find(x => x > 3)

angularJS系列指令directive應用例項

程式碼結構 html頁面程式碼 <!DOCTYPE html> <html ng-app="demoForDirective"> <head> <meta http-equiv="content-ty

AngularJs 常見指令

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AngularJS 指令</title> <!--

AngularJS指令示例——表單驗證

示例1: <html ng-app='TestFormModule'> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> &

Python基礎十二常用模組

''' datetime datetime是Python處理日期和時間的標準庫 ''' ###########################獲取當前日期和時間 from datetime import datetime now =

AngularJS入門 AngularJS控制器 AngularJS常見指令

每一個AngularJS應用,都有唯一的一個全域性作用域範圍,也稱為根作用域,Angular中其他的作用域都 是這個根作用域的後代/子作用域。 AngularJS的根作用域/全域性作用域:$rootScope。 根作用域使用時,通過注入的方式新增到控制器處理函式的入參中。 $watch:   $scope物

【十七】hive常用函式String Functions

String Functions Return Type Name(Signature) Description Return

AngularJs指令

ng-app 每一次用AngularJS都離不開這個指令,順便說下$rootScope。聲明瞭ng-app的元素會成為$rootScope的起點,而$rootScope是作用域鏈的根, 通常宣告在<html>你懂的。也就是說根下的作用域都可以訪問它。但是,

AngularJs指令大全

1、ng-model 這個大家都非常熟悉了,就是將表單控制元件和當前作用域的屬性進行繫結。需要注意繫結的scope的範圍(父scope與子scope)。 ng-model主要繫結的元素包括input, select, textarea  ng-model的元素都有ng-valid(可用)

Java虛擬機系列Java存結構簡介

內存空間 指示器 私有 以及 並且 內存區域 在服務器 規範 基礎 本文我們將講解Java虛擬機中各個區域以及各個區域的作用。 一.程序計數器什麽是程序計數器,有什麽作用?程序技術器是一塊比較小的內存區域,主要當做是線程中所執行的字節碼的行號指示器,字節碼解釋器工作時就是通

8.7 每日課後作業系列常用模板(介紹和運用)

ali baidu not in {} int time 緩存 date 方式 # 今日作業:# p1.簡述# 什麽是模塊#一系列功能的集合體# 模塊有哪些來源# p1.內置# 2.第三方# 3.自定義# 模塊的格式要求有哪些# p1 .py文件# 2 已被編譯為共享庫或D

angularjs系列run方法操作

1、$scope.$apply的使用,源生跟angular的結合使用,如果沒有使用$timeout,則使用$scope.$apply,這樣操作$scope下面的變數值的變化,介面上對應的值才會有相應的變化; <!DOCTYPE html> <html lang="en" ng-a

Vue指令

1、v-bind:響應並更新DOM特性;例如:v-bind:href  v-bind:class  v-bind:title  等等 主要用法是繫結屬性,動態更新HTML元素上的屬性; 1 2 3 4 5 6 7 8 9 10 11

Python中常用屬性:__getattribute__屬性攔截器使用詳解

      因為python中所有類預設繼承object類。而object類提供了了很多原始的內建屬性和方法,所以使用者自定義的類在Python中也會繼承這些內建屬性。可以使用dir()函式可以檢視,雖然python提供了很多內建屬性但實際開發中常用的不多。而很多系

MySQL 常用函式與所有函式

MySQL 常用內建函式 【數值函式】 Abs(X) //絕對值abs(-10.9) = 10 Format(X,D) //格式化千分位數值format(1234567.456, 2) =1,234,567.46 Ceil(X) //向上取整ceil(10.1) = 11 Floor(X) //

常用函式

dir:檢視當前物件的可呼叫的函式。 help:檢視當前函式的幫助文件 字串: lower():所有的大寫字母轉換成小寫 upper():所有的小寫字母轉換成大寫 swapcase():大寫變小寫,小寫變大寫 title()