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
Post a Comment