摘要:在運用的時候,運用自定義指令可以寫一些組件,非常方便。這里給大家分享一些關于自定義指令的知識。
在運用angularjs的時候,運用自定義指令可以寫一些組件,非常方便。這里給大家分享一些關于angular自定義指令的知識。
1. 定義對于指令,可以把它簡單的理解成在特定DOM元素上運行的函數(shù),指令可以擴展這個元素 的功能。
2.定義指令的方法:angular.module("myApp", []) .directive("myDirective", function ($timeout, UserDefinedService) { // 指令定義放在這里 });
第一個參數(shù),指令的名字myDirective 用來在視圖中引用特定的指令。
第二個參數(shù)是一個函數(shù),這個函數(shù)返回一個對象,$compile服務利用這個方法返回的對 象,在DOM調(diào)用指令時來構造指令的行為。
angular.module("myApp", []) .directive("myDirective", function() { return { restrict: String, priority: Number, terminal: Boolean, template: String or Template Function: function(tElement, tAttrs) (...}, templateUrl: String, replace: Boolean or String, scope: Boolean or Object, transclude: Boolean, controller: String or function(scope, element, attrs, transclude, otherInjectables) { ... }, controllerAs: String, require: String, link: function(scope, iElement, iAttrs) { ... }, compile: // 返回一個對象或連接函數(shù),如下所示: function(tElement, tAttrs, transclude) { return { pre: function(scope, iElement, iAttrs, controller) { ... }, post: function(scope, iElement, iAttrs, controller) { ... } } // 或者 return function postLink(...) { ... } } }; });
restrict 指令在DOM中可以何種形式被引用或聲明
可選值如下: ( 可組合使用 )
E(元素)
A(屬性,默認值)
priority 優(yōu)先級 用來表示指令使用的優(yōu)先順序
如果一個元素上具有兩個優(yōu)先級相同的指令,聲明在前面的那個會被優(yōu)先調(diào)用。如果其中一 個的優(yōu)先級更高,則不管聲明的順序如何都會被優(yōu)先調(diào)用:具有更高優(yōu)先級的指令總是優(yōu)先運行。
terminal 用來告訴AngularJS停止運行當前元素上比本指令優(yōu)先級低的指令。但同當前指令 優(yōu)先級相同的指令還是會被執(zhí)行。
var myCtr=["$scope",function($scope){}] var app=angular.module("myApp",[]); app.controller("myCtr",myCtr); app.directive("directiveOne",function(){ return { restrict: "ECMA", priority: 2, terminal: true, template:function(tElement, tAttrs){ tElement[0].style.fontSize="18px"; //設置字體 } } }); app.directive("directiveSec",function(){ return { restrict: "ECMA", priority: 1, template:function(tElement, tAttrs){ tElement[0].style.color="red"; //設置顏色 } } });這是自定義指令
template
用來表示模板,可以是一段字符串,如“
template:function(tElement, tAttrs){ //tElement表示當前元素,是一個數(shù)組,tAttrs表示該元素的屬性,是一個對象 tElement[0].style.color="red"; //設置顏色 }
templateUrl 用來表示模板,與上面的template功能相似,但表示路徑,可以是外部HTML文件路徑的字符串也可以是一個可以接受兩個參數(shù)的函數(shù),參數(shù)為tElement和tAttrs,并返回一個外部HTML文件 路徑的字符串。
replace 默認為false,模板會被當作子元素插入到調(diào)用此指令的元素內(nèi)部,為true,則直接替換此元素
.directive("someDirective", function() { return { template: "some stuff here" }; });some stuff here.directive("someDirective", function() { return { replace: true // 修飾過 template: "some stuff here" }; });some stuff here
scope
(1)當scope設置為true時,會從父作用域繼承并創(chuàng)建一個新的作用域?qū)ο蟆?(2) 默認為false,并不會創(chuàng)建新的作用域?qū)ο?,直接使用父scope。 (3)設置為{},表示隔離作用域,指令的 模板就無法訪問外部作用域了var myCtr=["$scope",function($scope){ $scope.name="father controller?。? }] var app=angular.module("myApp",[]); app.controller("myCtr",myCtr); app.directive("directiveOne",function(){ return { restrict:"ECMA", template: "這是自定義指令{{name}}", scope:{}, controller:function($scope){ console.log($scope.name);//打印出來為undefined,因為無法訪問尾部作用域了 } } });當然,AngularJS提供了幾種方法能夠?qū)⒅噶顑?nèi)部的隔離作用域,同指令外部的作用域進行數(shù)據(jù)綁定。 (a)@ (or @attr) 單向綁定,外部scope能夠影響內(nèi)部scope,但反過來不成立 (b)= (or =attr) 雙向綁定,外部scope和內(nèi)部scope的model能夠相互改變 ![圖片描述][1] 上面的輸入框輸入,下面會變,下面的輸入框輸入上面的也會變 (c)& (or &attr) 把內(nèi)部scope的函數(shù)的返回值和外部scope的任何屬性綁定起來controller
controller參數(shù)可以是一個字符串或一個函數(shù)。當設置為字符串時,會以字符串的值為名字, 來查找注冊在應用中的控制器的構造函數(shù).當為函數(shù)時,可以像平時寫控制器那樣寫,可以將任意可以被注入的AngularJS服務傳遞給控制器controllerAs(字符串)
controllerAs參數(shù)用來設置控制器的別名,可以以此為名來發(fā)布控制器,并且作用域可以訪 問controllerAs。這樣就可以在視圖中引用控制器,甚至無需注入$scope。require
require參數(shù)可以被設置為字符串或數(shù)組,字符串代表另外一個指令的名字。require會將控 制器注入到其值所指定的指令中,并作為當前指令的鏈接函數(shù)的第四個參數(shù)。字符串或數(shù)組元素的值是會在當前指令的作用域中使用的指令名稱。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/83510.html
相關文章
Angular directive 實例詳解
摘要:方法三使用調(diào)用父作用域中的函數(shù)實例地址同樣采用了缺省寫法,運行之后,彈出窗口布爾值或者字符,默認值為這個配置選項可以讓我們提取包含在指令那個元素里面的內(nèi)容,再將它放置在指令模板的特定位置。 準備代碼,會在實例中用到 var app = angular.module(app, []); angular指令定義大致如下 app.directive(directiveName, functi...
Angular directive 實例詳解
摘要:方法三使用調(diào)用父作用域中的函數(shù)實例地址同樣采用了缺省寫法,運行之后,彈出窗口布爾值或者字符,默認值為這個配置選項可以讓我們提取包含在指令那個元素里面的內(nèi)容,再將它放置在指令模板的特定位置。 準備代碼,會在實例中用到 var app = angular.module(app, []); angular指令定義大致如下 app.directive(directiveName, functi...
Angular directive 實例詳解
摘要:方法三使用調(diào)用父作用域中的函數(shù)實例地址同樣采用了缺省寫法,運行之后,彈出窗口布爾值或者字符,默認值為這個配置選項可以讓我們提取包含在指令那個元素里面的內(nèi)容,再將它放置在指令模板的特定位置。 準備代碼,會在實例中用到 var app = angular.module(app, []); angular指令定義大致如下 app.directive(directiveName, functi...
Angular開發(fā)實踐(三):剖析Angular Component
摘要:組件元數(shù)據(jù)組件元數(shù)據(jù)等,下文將著重講解每個元數(shù)據(jù)的含義。建議此時獲取數(shù)據(jù),不要在構造函數(shù)中獲取。每次變化監(jiān)測發(fā)生時被調(diào)用。銷毀指令組件之前觸發(fā)。 Web Component 在介紹Angular Component之前,我們先簡單了解下W3C Web Components 定義 W3C為統(tǒng)一組件化標準方式,提出Web Component的標準。 每個組件包含自己的html、css、j...
發(fā)表評論
0條評論
PingCAP
男|高級講師
TA的文章
閱讀更多
C語言實現(xiàn)通訊錄管理系統(tǒng)(結構體+枚舉+動態(tài)內(nèi)存開辟+文件操作+線性表存放數(shù)據(jù))
閱讀 3878·2021-09-27 13:36
主機是什么-通常所說的主機是指什么?
閱讀 4554·2021-09-22 15:12
GitHub發(fā)現(xiàn)“tar”和 npm CLI 7個代碼執(zhí)行漏洞 影響Windows及unix用戶
閱讀 3063·2021-09-13 10:29
6-后置處理器:Post-Processor
閱讀 1826·2021-09-10 10:50
關于開發(fā)一款WEB CMS系統(tǒng)市場和前景價值探討
閱讀 2360·2021-09-03 10:43
構建工具是如何用 node 操作 html/js/css/md 文件的
閱讀 519·2019-08-29 17:10
Python爬蟲入門教程 3-100 美空網(wǎng)數(shù)據(jù)爬取
閱讀 442·2019-08-26 13:52
React入門系列 - 2 編寫第一個Hello world的React程序
閱讀 3250·2019-08-23 14:37
閱讀需要支付1元查看