angularjs - Initializing @attr in Angular directive -


i have directive this: can see equivalent plunker here http://plnkr.co/edit/0e2nmyatamd3m3qtctls

app.directive('bptest', function() {   return {     restrict: 'a',     templateurl: 'directivetemplate.html',     scope: {       bptype: '@'     },     link: function($scope, $elem, $attrs) {       console.log($scope, $elem, $attrs);       $scope.bptype = $scope.bptype || 'text';     }  // link function   }; }); 

in directivetemplate.html:

<div>   {{ bptype }} </div> 

in index.html:

<div bp-test bp-type="text"></div>  <!-- results in <div>text</div> --> <div bp-test bp-type="number"></div>  <!-- results in <div>number</div> --> <div bp-test></div>  <!-- results in <div></div> ????? --> 

since initialize $scope.bptype = $scope.bptype || 'text', expect third directive <div bp-test></div> display <div>text</div> spits out <div></div>.

what misunderstanding/doing wrong?

thanks!

the scope binding happens later first call link function need watch attribute set default value.

$scope.$watch("bptype", function(value) {   $scope.bptype = value || 'default'; }); 

Comments

Popular posts from this blog

c++ - Creating new partition disk winapi -

Android Prevent Bluetooth Pairing Dialog -

VBA function to include CDATA -