W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
節(jié)點屬性被包裝之后會傳給 compile
和 link
函數(shù)。從這個操作中,我們可以得到節(jié)點的引用,可以操作節(jié)點屬性,也可以為節(jié)點屬性注冊偵聽事件。
<test a="1" b c="xxx"></test>
var app = angular.module('Demo', [], angular.noop); app.directive('test', function(){ var func = function($element, $attrs){ console.log($attrs); } return {compile: func, restrict: 'E'}
整個 Attributes 對象是比較簡單的,它的成員包括了:
ng-click
變成 ngClick
。除了上面這些成員,對象的成員還包括所有屬性的名字。
先看 $observe 的使用,基本上相當(dāng)于 $scope 中的 $watch :
<div ng-controller="TestCtrl"> <test a="{{ a }}" b c="xxx"></test> <button ng-click="a=a+1">修改</button> </div>
var app = angular.module('Demo', [], angular.noop); app.directive('test', function(){ var func = function($element, $attrs){ console.log($attrs); $attrs.$observe('a', function(new_v){ console.log(new_v); }); } return {compile: func, restrict: 'E'} }); app.controller('TestCtrl', function($scope){ $scope.a = 123; });
$set 方法的定義是: function(key, value, writeAttr, attrName) { ... }
。
true
。<div ng-controller="TestCtrl"> <test a="1" ys-a="123" ng-click="show(1)">這里</test> </div>
var app = angular.module('Demo', [], angular.noop); app.directive('test', function(){ var func = function($element, $attrs){ $attrs.$set('b', 'ooo'); $attrs.$set('a-b', '11'); $attrs.$set('c-d', '11', true, 'c_d'); console.log($attrs); } return {compile: func, restrict: 'E'} }); app.controller('TestCtrl', function($scope){ $scope.show = function(v){console.log(v);} });
從例子中可以看到,原始的節(jié)點屬性值對,放到對象中之后,名字一定是“標(biāo)準(zhǔn)化”之后的。但是手動 $set
的新屬性,不會自動做標(biāo)準(zhǔn)化處理。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: