2013-04-30 15 views
50

Attualmente si verifica un problema quando si passa un array a una direttiva tramite un attributo di tale direttiva. Posso leggerlo come una stringa ma ho bisogno di una matrice, quindi questo è quello che mi è venuto in mente, ma non funziona. Aiuta qualcuno? thks di anticipoPassaggio dell'array tramite attributo alla direttiva AngularJS

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']" ... > 

risposta

55

Se accedi questo array dal campo di applicazione, vale a dire caricata in un controllore, si può solo passare il nome della variabile:

Binding array to directive variable in AngularJS

direttiva:

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

Template:

<post title="sample title" tags="arrayName" ... > 
+1

Cosa succede se è un array in linea: 'tags =" [1, 2, 3] "'? Modifica: ho trovato la mia risposta qui: https://stackoverflow.com/q/20811527/3328979 – Arashsoft

+0

tag non è definito quando faccio 'console.log (scope.tags)'. cosa potrebbe essere sbagliato – Abhi

2

si può avere anche usare $ portata al posto di attrs. quindi otterrai un oggetto array, altrimenti otterrai una stringa.

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


link: function(scope, element, attrs){ 
      scope.tags = scope.tags 
     } 
Problemi correlati