W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
回顧最開始的那個代碼顯示的例子,那個例子只能處理一次節(jié)點內(nèi)容。如果節(jié)點的內(nèi)容是一個變量的話,需要用另外的思路來考慮。這里我們假設(shè)的例子是,定義一個指令 showLenght ,它的作用是在一段文本的開頭顯示出這段節(jié)點文本的長度,節(jié)點文本是一個變量。指令使用的形式是:
<div ng-controller="TestCtrl"> <div show-length>{{ text }}</div> <button ng-click="text='xx'">改變</button> </div>
從上面的 HTML 代碼中,大概清楚 ng 解析它的過程(只看 show-length 那一行):
與處理 {{ text }} 時添加的指令相同,我們實現(xiàn) showLength 的思路,也就是:
代碼如下:
app.directive('showLength', function($rootScope, $document){ var func = function(element, attrs, link){ return function(scope, ielement, iattrs, controller){ var node = link(scope); ielement.append(node); var lnode = $('<span></span>'); ielement.prepend(lnode); scope.$watch(function(scope){ lnode.text(node.text().length); }); }; } return {compile: func, transclude: true, // element是節(jié)點沒,其它值是節(jié)點的內(nèi)容沒 restrict: 'A'}; });
上面代碼中,因為設(shè)置了 transclude 屬性,我們在 showLength 的 link 函數(shù)(就是 return 的那個函數(shù))中,使用 func 的第三個函數(shù)來重塑了原來的文本節(jié)點,并放在我們需要的位置上。然后,我們添加自己的節(jié)點來顯示長度值。最后給當(dāng)前的 scope 添加 $watch ,以更新這個長度值。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: