最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入講解AngularJS中的自定義指令的使用

 更新時間:2015年06月18日 12:18:29   投稿:goldensun  
這篇文章主要介紹了深入講解AngularJS中的自定義指令的使用,AngularJS是一款熱門的JavaScript開發(fā)庫,需要的朋友可以參考下

AngularJS的自定義指令,就是你自己的指令,加上編譯器編譯DOM時運行的原生核心函數(shù)。這可能很難理解?,F(xiàn)在,假設我們想在應用中不同頁面復用一些特定的代碼,而又不復制代碼。那么,我們就可以簡單地把這段代碼放到單獨的文件,并調用使用自定義指令的代碼,而不是一遍又一遍地敲下來。這樣的代碼更容易理解。AngularJS中有四種類型的自定義指令:

  1.     元素指令
  2.     屬性指令
  3.     CSS class 指令
  4.     注釋指令

在我們現(xiàn)有的app中實現(xiàn)他們之前,我們來看看自定義指令是個什么樣子:
 
元素指令

在html中寫下如下的標簽,它用來放置代碼片段。當我們想使用特定的代碼,我們就用上述標簽來包含該代碼。

<guitar-reviews> ... </guitar-reviews>

在JS文件中,用以下幾行代碼來使上述angularJS自定義指令生效。
 

app.directive('guitarReviews', function() {
 return {
  restrict  : 'E', // used E because of element 
  templateUrl : 'custom-directives/reviews.html'
 };
});

代碼解釋:

如同app.controller,我們先定義app.directive,然后定義guitarReview,后者是html中用到的元素標簽名。但是你注意到?jīng)]有,guitar-review 和guitarReviews是不同的?這是因為 guitar-reviews的連字符轉換到駝峰式大小寫,因而在JS文件中就變成了guitarReviews。下一步是正在返回參數(shù)的匿名函數(shù)。 restrict: ‘E' 是指我們在定義一個自定義元素指令,而 templateUrl則指向要包含的代碼片段文件。
 
屬性指令

在html文件的html標簽中敲入如下屬性,這個標簽用來盛放代碼片段。當我們想使用特定代碼片段,我們只要敲下這樣的標簽來包含該代碼。
 

<div guitar-reviews> ... </div>

在JS文件中,用以下代碼來使上述angularJS自定義指令生效。
 

app.directive('guitarReviews', function() {
 return {
  restrict  : 'A', // used A because of attribute 
  templateUrl : 'custom-directives/reviews.html'
 };
});

注意: AngularJS 推薦你用簡單的 css 和普通的注釋代替自定義指令中的CSS和注釋.

現(xiàn)在讓我們在app中實現(xiàn)自定義指令吧。你可以在這里下載項目文件。我把reviews部分的代碼放到單獨的文件,再把該代碼片段賦給一個元素,最后在details.html頁面中使用.
 
第一步

在指定的文件夾下新建一個文件夾命名為cDirectives,用來存放自定義的指令。然后,在該文件夾下創(chuàng)建一個reviews.html文件,用于持有用戶的reviews。此時,你的文件夾層次結構如下:

2015618121816801.png (152×250)

 第二步

在details.html中剪切review部分,并添加<user-reviews></user-reviews>標簽如下所示:

2015618121835496.png (1024×573)

 第三步

將你在details.html頁面中剪切的代碼拷貝至reviews.html如下所示:

<!-- Review Tab START, it has a new controller -->
<div ng-show="panel.isSelected(3)" class="reviewContainer" ng-controller="ReviewController as reviewCtrl" >
 
<!-- User Reviews on each guitar from data.json - simple iterating through guitars list -->
<div class="longDescription uReview" ng-repeat="review in guitarVariable[whichGuitar].reviews"> 
  <h3>Review Points: {{review.star}} </h3>
  <p> {{review.body}} ~{{review.name}} on <date>{{review.createdOn | date:'MM/yy'}} </p>
</div><!-- End User Reviews -->
 
<!-- This is showing new review preview-->
<div ng-show="add === 1" class="longDescription uReview" > 
  <h3>Review Points: {{reviewCtrl.review.star}} <span ng-click="add=0">X</span></h3>
  <p> {{reviewCtrl.review.body}} ~ {{reviewCtrl.review.name}} </p>
</div>
 
<!-- Add new Review to specific guitar - click this link to show review adding pannel -->
<a href ng-click="add=1" class="addReviewLink">Add review</a>  
 
<!-- form validates here using form name and .$valid and on submission we are going to addReview function with guitarID -->
<form class="reviewForm" name="reviewForm" ng-submit="reviewForm.$valid && reviewCtrl.addReview(guitarVariable.indexOf(guitarVariable[whichGuitar]))" novalidate ng-show="add===1" >
  <div>
    Review Points: 
    <!-- ng-option here is setting options, cool? -->
    <select ng-model="reviewCtrl.review.star" ng-options="point for point in [5,4,3,2,1]" required >    
    </select>
    Email: 
    <input type="email" ng-model="reviewCtrl.review.name" required>
    <button type="submit">Submit</button>
    </div>
    <textarea placeholder="Enter your experience with this guitar..." ng-model="reviewCtrl.review.body"></textarea>
</form><!-- END add new review -->
</div><br /><!-- END Review Tab -->

 
第四步

現(xiàn)在可以在user-reviews標簽中添加行為了。讓我們打開controller.js,添加如下代碼:

GuitarControllers.directive('userReviews', function() {
 return {
  restrict  : 'E', // used E because of element 
  templateUrl : 'partials/cDirectives/reviews.html'
 };
});

 

代碼解釋:

我們的<user-reviews>指令在這里變成了userReviews(以camel形式表示)并且連字符不見了。下面我們可以說,當它被調用時加載templateURL中的文件并且對元素E限制該指令。

我們剛剛自定義了一個指令。盡管看起來我們的應用中沒有變化,但是現(xiàn)在我們的代碼較之前已經(jīng)進行了很好的規(guī)劃。你能為描述和規(guī)格自定義指令嗎?自己嘗試一下吧。

相關文章

  • Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程

    Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程

    在Angular的原生指令中有這幾個指令用來控制元素的展示與否,ng-show/ng-hide/ng-if和ng-switch。在angular性能優(yōu)化中,我們也常常會用到它。這篇文章主要給大家介紹了在Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程,需要的朋友可以參考。
    2017-05-05
  • Angular中響應式表單的三種更新值方法詳析

    Angular中響應式表單的三種更新值方法詳析

    這篇文章主要給大家詳細解析了關于Angular中響應式表單的三種更新值方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08
  • angularJs中datatable實現(xiàn)代碼

    angularJs中datatable實現(xiàn)代碼

    本篇文章主要介紹了angularJs中datatable實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Angular2中Bootstrap界面庫ng-bootstrap詳解

    Angular2中Bootstrap界面庫ng-bootstrap詳解

    不知道大家有沒有留意,最近angular-ui團隊終于正式發(fā)布了基于 Angular2的Bootstrap界面庫ng-bootstrap ,之前工作中一直在用 AngularJS 1.x 的UI Bootstrap , 因此對這個ng-bootstrap 也是很感興趣,所以第一時間進行試用。這篇文章就給大家詳細介紹下ng-bootstrap。
    2016-10-10
  • Angular利用trackBy提升性能的方法

    Angular利用trackBy提升性能的方法

    這篇文章主要介紹了在Angular中利用trackBy來提升性能的實現(xiàn)方法,需要的朋友可以參考下
    2018-01-01
  • Angular 組件之間的交互的示例代碼

    Angular 組件之間的交互的示例代碼

    這篇文章主要介紹了Angular 組件之間的交互的示例代碼,根據(jù)數(shù)據(jù)的傳遞方向,分為父組件向子組件傳遞、子組件向父組件傳遞及通過服務傳遞三種交互方法。非常具有實用價值,需要的朋友可以參考下
    2018-03-03
  • 詳解Webstorm 下的Angular2.0開發(fā)之路(圖文)

    詳解Webstorm 下的Angular2.0開發(fā)之路(圖文)

    這篇文章主要介紹了詳解Webstorm 下的Angular2.0開發(fā)之路(圖文) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • AngularJS ionic手勢事件的使用總結

    AngularJS ionic手勢事件的使用總結

    本篇文章主要介紹了AngularJS手勢事件的使用總結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 用Angular實現(xiàn)一個掃雷的游戲示例

    用Angular實現(xiàn)一個掃雷的游戲示例

    這篇文章主要介紹了用Angular實現(xiàn)一個掃雷的游戲示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • AngularJS包括詳解及示例代碼

    AngularJS包括詳解及示例代碼

    本文主要介紹AngularJS包括的基礎知識,這里整理了相關資料并附示例代碼和實現(xiàn)效果圖,有需要的小伙伴可以參考下
    2016-08-08

最新評論

洞头县| 滨海县| 临桂县| 合川市| 仙游县| 黄陵县| 宁安市| 浦北县| 汾阳市| 锦州市| 突泉县| 南川市| 民县| 新蔡县| 班戈县| 漯河市| 德昌县| 通山县| 元谋县| 平安县| 科尔| 固安县| 隆尧县| 嘉峪关市| 海林市| 冕宁县| 北宁市| 武隆县| 扬州市| 日土县| 莲花县| 陇川县| 宁城县| 丰都县| 彩票| 阿瓦提县| 昭通市| 昌乐县| 巴青县| 保亭| 彭山县|