Angular開發(十二)-自定義指令
在第四章的時候我們學習了angular
的通用指令(通用指令地址),本章中我們自定義指令。
本人理解自定義指令是擴充套件傳統的HTML
語法,類似傳遞HTML語法中的class,style,id
自定義指令分下列幾種
- 1、屬性指令
- 普通的屬性指令
- 為指令繫結輸入
- 響應使用者操作
- 2、結構指令
一、新建一個工程,建立基本的結構
- ng new directivedemo 建立工程
- ng g directive mydirective/mydir1 在一個指令資料夾下建立一個mydir1指令
- ng g component dirdemo01 建立一個demo元件
使用angular-cli
建立就不需要手動去app.module.ts
模組試圖類中新增自己建立的指令Mydir1Directive
二、普通的屬性指令的使用
import {Directive, ElementRef} from '@angular/core';
@Directive({
selector: '[appMydir1]' //appMydir1表示指令名稱
})
export class Mydir1Directive {
//ElementRef表示真實的Dom元素
constructor(el:ElementRef) {
el.nativeElement.style.backgroundColor = "#f00" ;
}
}
//html程式碼中使用
<p appMydir1>
dirdemo01 works!
</p>
三、為指令繫結輸入
這種方式相對於上面那種方式更加的靈活,外面傳遞引數進去(簡單的是元件間的資料互動)
import {Directive, ElementRef, Input} from '@angular/core';
@Directive({
selector: '[appMydir1]',
//inputs:['appMydir1']
})
export class Mydir1Directive {
private _defaultColor='green' ;
private el:HTMLElement;
@Input("appMydir1") //這個也可以刪除把inputs:['appMydir1']放出來
set appMydir1(colorName:string){
console.log(colorName);
this.setStyle(colorName);
};
constructor(el:ElementRef){
this.el=el.nativeElement;
this.setStyle(this._defaultColor);
}
private setStyle(color:string){
this.el.style.backgroundColor=color;
}
}
//html程式碼
<p [appMydir1]="colorName">
dirdemo01 works!
</p>
<input type="button" value="紅色" (click)="colorName='red'"/>
<input type="button" value="綠色" (click)="colorName='#360'"/>
<input type="button" value="藍色" (click)="colorName='blue'"/>
四、響應使用者操作
@HostListener
裝飾器指向使用屬性指令的DOM
元素,使得DOM
元素的事件與指令關聯起來
import {Directive, ElementRef, Input, HostListener} from '@angular/core';
@Directive({
selector: '[appMydir2]',
inputs:['appMydir2']
})
export class Mydir2Directive {
private _defaultColor = "yellow";
private el: HTMLElement;
private backgroundColor:string;
//@Input("appMydir2") backgroundColor:string;
constructor(el:ElementRef) {
this.el = el.nativeElement;
this.setStyle(this._defaultColor);
}
@HostListener("click") onClick(){
this.setStyle(this.backgroundColor || this._defaultColor);
}
setStyle(color:string){
this.el.style.backgroundColor = color;
}
}
//html程式碼
<p [appMydir2]="'red'">
dirdemo01 works!
</p>
五、結構指令,angular
中結構指令是指對DOM
新增與刪除類似ngIf
這樣的
現在模擬
ngIf
的功能
需要注入這兩個服務
* TemplateRef可以用來訪問元件中的模板
* ViewContainerRef可作為試圖內容渲染器
//自定義指令的程式碼
import {Directive, TemplateRef, ViewContainerRef} from '@angular/core';
@Directive({
selector: '[appMydir3]',
inputs:["appMydir3"]
})
export class Mydir3Directive {
set condition(newCondition:boolean){
if(newCondition){
this.viewContainer.createEmbeddedView(this.templateRef);
}else {
this.viewContainer.clear();
}
}
constructor(
private templateRef:TemplateRef<any>,
private viewContainer:ViewContainerRef
){}
}
//html程式碼
<div class="box" *appMydir3="true"></div>
<div class="box" *appMydir3="false"></div>
相關推薦
Angular開發(十二)-自定義指令
在第四章的時候我們學習了angular的通用指令(通用指令地址),本章中我們自定義指令。 本人理解自定義指令是擴充套件傳統的HTML語法,類似傳遞HTML語法中的class,style,id
獻給初學iOS的小盆友們——微博app專案開發之十二自定義cell程式碼補全
上節課我們主要講解了我們是怎麼一步一步把自定義cell打通的,主要方法就是引入了MVVM檢視模型,這樣我們就可以利用檢視模型就提前把各個子控制元件的frame都計算好了。今天我們就是講如何計運算元控制元件frame,以及補全原創微博和轉發微博的設計。 本節內容
angularJS學習之路(三十)---自定義指令---templateUrl
第一種寫法: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title&
angular 許可權控制 service+ 自定義指令(改寫ngIf)
功能說明:許可權控制1. 先建立一個service,使用者獲取使用者資訊2. 然後自定義一個結構指令directive(改寫ngIf指令): 傳入需要的許可權,根據呼叫service獲取的使用者資訊,判斷是否有許可權,如果有許可權,則顯示,無許可權,則不顯示建立service
hadoop深入研究:(十二)——自定義Writable
自定義Writablehadoop雖然已經實現了一些非常有用的Writable,而且你可以使用他們的組合做很多事情,但是如果你想構造一些更加複雜的結果,你可以自定義Writable來達到你的目的,我們以註釋的方式對自定義Writable進行講解(不許說我只帖程式碼佔篇幅哦,姿
angular創建自定義指令的四種方式
htm mil 成功 評論 utf-8 例如 angularjs size 限制 angular除了內置的部分指令,還可以通過.directive來自定義指令。要調用自定義指令,HTML 元素上需要添加自定義指令名。使用駝峰法來命名一個指令:nsHeader,在調用時使
angular 自定義指令 詳解--restrict、restrict、replace
emp bold span 類型 ret space con 設置 註意 Angularjs 允許根據實際業務需要自定義指令, 通過angular全局對象下的 directive 方法實現。可以自定義屬性、自定義標簽、自定義功能 接下來定義一個名叫custom的指令,並利用
Angular-自定義指令-下
接下來 -h 模塊 use 相互 讓我 model too 服務 自定義指令學習有段時間了,學了些紙上談兵的東西,還沒有真正的寫個指令出來呢。。。所以,隨著學習的接近尾聲,本篇除了介紹剩余的幾個參數外,還將動手結合使用各參數,寫個真正能用的指令出來玩玩。 我們在自定義指
angular 自定義指令詳解 Directive
聲明 其他 原型繼承 創建 tool 兩個 模板 變化 組合 廢話不多說,下面就直接上代碼 //angular指令的定義,myDirective ,使用駝峰命名法 angular.module(‘myApp‘, []) .directive(‘myDirective‘,
angular指令詳解--自定義指令
修飾 cor ring ttr 子元素 標簽 常用 文本 利用 自定義指令 directive()這個方法是用來定義指令的: angular.module(‘myApp‘, []) .directive(‘myDirective‘, function ($timeout,
Angular17 Angular自定義指令
分類 dto end sel 數據 str too rdm cor 1 什麽是HTML HTML文檔就是一個純文本文件,該文件包含了HTML元素、CSS樣式以及JavaScript代碼;HTML元素是由標簽呈現,瀏覽器會為每個標簽創建帶有屬性的DOM對象,瀏覽器通過渲染
C++語言學習(二十)——自定義內存管理
single null allocated 析構函數 opera .get cat st2 argc C++語言學習(二十)——自定義內存管理 一、統計類對象中成員變量的訪問次數 mutable是為了突破const函數的限制而設計的,mutable修飾的成員變量將永遠處於可
009-Ambari二次開發之新增自定義元件Redis(二)
上一篇我們主要介紹了Ambari新增元件的答題流程並以REDIS為例說明了流程,本篇在上一篇的基礎上,進一步完善說明流程並介紹如何給元件新增metric 掃描二維碼,關注BearData,獲取最新文章 上篇中,我們已經制作出了redis的rpm包,並重新編譯了我們修改後的Ambar
008-Ambari二次開發之新增自定義元件Redis(一)
Ambari目前支援的元件有HDFS、YARN、HBase、Hive、Pig、ZooKeeper、Sqoop、Storm、Flume、Tez、Oozie、Falcon、Storm、Altas、Knox、Spark、Ranger、Mahout、Kerberos等,已經涵蓋了從大資料應用的
SpringCloud(二十)自定義eureka-client服務列表
當我們不需要從eureka等獲取服務列表時,可以自己指定服務列表。 ribbon: eureka: #禁用eureka ribbon enabled: false eureka-servi
android藍芽4.0BLE及2.0 2.1 apk 串列埠助手帶16個自定義按鍵和自定義指令 字元接收 十六進位制或字元傳送
android藍芽4.0BLE apk 帶16個自定義按鍵和自定義指令 字元接收 https://pan.baidu.com/s/1eRSfprO android藍芽2.0 2.1 apk 帶16個自定義按鍵和自定義指令 字元接收 帶自動連線 https://pan.b
angular自定義指令使用$compile動態生成html
<script> angular .module(‘app‘) .controller(‘SampleCtrl‘, function ($scope, $filter) { $scope.open
Angular自定義指令之compile, link, controller屬性詳解及例項演示
本文章主要就angularjs指令中的compile,link及controller函式的使用和區別進行詳細討論。以下是本文的結構: directive的執行原理 compile用法 link 用法 controller 用法 compile,link及co
支付寶小程式開發練習,顯示自定義二維碼(四)
之前用了幾種方式 1.後端生成二維碼需要加密的字元竄,小程式前端利用二維碼元件渲染canvas畫出二維碼,由於支付寶小程式沒有這樣的元件,於是去找微信小程式的解決方案,把微信小程式的二維碼前端元件搬過來用,除錯到不報錯了,結果二維碼顯示不出來,原因很難找,宣告失敗! 2.
從零開始學 Web 之 Vue.js(二)過濾器,按鍵修飾符,自定義指令
大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 部落格園:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/