Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing array via attribute to AngularJS directive

I'm currently having a problem when passing an array to a directive via an attribute of that directive. I can read it as a String but i need it as an array so this is what i came up with but it doesn't work. Help anyone? thks in advance

Javascript::

app.directive('post', function($parse){     return {         restrict: "E",         scope:{             title: "@",             author: "@",             content: "@",             cover: "@",             date: "@"         },         templateUrl: 'components/postComponent.html',         link: function(scope, element, attrs){             scope.tags = $parse(attrs.tags)         }     } } 

HTML::

<post title="sample title" tags="['HTML5', 'AngularJS', 'Javascript']" ... > 
like image 556
HeberLZ Avatar asked Apr 30 '13 01:04

HeberLZ


2 Answers

If you're accessing this array from your scope, i.e. loaded in a controller, you can just pass the name of the variable:

Binding array to directive variable in AngularJS

Directive:

scope:{         title: "@",         author: "@",         content: "@",         cover: "@",         date: "@",         tags: "="     }, 

Template:

<post title="sample title" tags="arrayName" ... > 
like image 108
Alex Osborn Avatar answered Sep 19 '22 13:09

Alex Osborn


you can also have to use $scope instead of attrs. then you will get array object, otherwise you will get an string.

     scope:{             title: "@",             author: "@",             content: "@",             cover: "@",             date: "@",             tags: "="         },   link: function(scope, element, attrs){             scope.tags = scope.tags         } 
like image 30
Shahadat Hossain Avatar answered Sep 18 '22 13:09

Shahadat Hossain