天天看點

[Angularjs]自定義指令

指令的作用可以簡單的描述為實作語義化的标簽,比如你在移動端h5應用中,有個經常用的功能,比如通訊錄的功能,不同的頁面都要用到,這時你可以将其封裝為指令,在使用的時候可以通過這樣<friends></friends>的語義化的标簽直接在頁面中使用即可。

首先實作一個helloworld的例子,讓我們先上手自定義指令,先體會下指令的妙處。

定義指令helloword

[Angularjs]自定義指令
[Angularjs]自定義指令

使用指令

效果

[Angularjs]自定義指令

生成的html

看到生成的标簽,你大概已經猜出template的作用了。

restrict: 說明指令在html中的渲染形式,選項有"a"、"e" 和 "c", "m" ,分别代表 attribute、element、class和comment(預設值為"a"),對應首字母記起來也很容易。

示例

a:<div helloworld></div>

c:<div class="helloworld"></div>

m:<!-- helloworld -->

transclude

指令的作用是把自定義的指令發标簽替換成浏覽器能夠認識的标簽,如果自定義的标簽内部出現了子标簽,那麼transclude就可以幫我進行處理了。

[Angularjs]自定義指令
[Angularjs]自定義指令

在html上使用

[Angularjs]自定義指令
[Angularjs]自定義指令
[Angularjs]自定義指令

link

在指令中負責執行dom操作和注冊事件監聽器。

參數

scope:指令的scope的引用。scope變量在初始化時是不被定義的,link方法會注冊螢幕監視值變化事件。

element:包含指令的dom元素的引用,link方法一般通過jquery操作執行個體。

controller:在有嵌套指令的情況下使用。這個參數作用在把子指令的引用提供給父指令,允許指令之間進行互動。

scope

建立指令的作用範圍,scope在指令中作為屬性标簽傳遞。scope是建立可以複用指令的必備條件,每個指令(不論是處于嵌套指令的哪一級)都有其唯一的作用域,它不依賴于父scope。scope對象定義names和types變量。

“@”:(值傳遞,單向綁定),指令會檢索從父級scope中傳遞而來字元串中的值。指令可以使用該值但無法修改,是常用的變量。

“=”:(引用,雙向綁定),指令檢索scope中的引用取值。值可以是任意類型的,包括符合對象和數組。指令可以更改父級scope中的值,是以當指令需要修改父級scope中的值時我們就需要這種類型。

“&”:(表達式)在父級scope中起作用的表達式,它允許指令實作比修改值更進階的操作。

實作friends自定義指令

[Angularjs]自定義指令
[Angularjs]自定義指令

friends模闆

[Angularjs]自定義指令
[Angularjs]自定義指令

在路由#/home下使用指令friends

浏覽頁面

[Angularjs]自定義指令

這裡為了友善直接将模闆存在一個html頁面裡面了,你也可以通過拼接字元串的形式将标簽寫在自定義指令裡面。

今天抽空将指令這塊補一下。

參考

<a href="http://www.cnblogs.com/powertoolsteam/p/angularjs-custom-directive.html" target="_blank">http://www.cnblogs.com/powertoolsteam/p/angularjs-custom-directive.html</a>

部落格位址:

<a href="http://www.cnblogs.com/wolf-sun">http://www.cnblogs.com/wolf-sun/</a>

部落格版權:

本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連接配接。

如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起讨論,共同進步!

再次感謝您耐心的讀完本篇文章。http://www.cnblogs.com/wolf-sun/p/5373762.html

繼續閱讀