2013-04-30 15 views
50

Mam obecnie problem podczas przekazywania tablicy do dyrektywy poprzez atrybut tej dyrektywy. Mogę go odczytać jako ciąg, ale potrzebuję go jako tablicy, więc to jest to, co wymyśliłem, ale to nie działa. Pomóc komuś? thks wyprzedzeniemPrzekazywanie macierzy za pośrednictwem atrybutu do dyrektywy 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']" ... > 

Odpowiedz

55

Jeśli masz dostępu do tej tablicy ze swojego zakresu, tj załadowanego sterownika, wystarczy podać nazwę zmiennej:

Binding array to directive variable in AngularJS

Dyrektywa:

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

Szablon:

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

Co jeśli jest to wbudowana tablica: 'tags =" [1, 2, 3] "'? Edycja: Znalazłem odpowiedź tutaj: https://stackoverflow.com/q/20811527/3328979 – Arashsoft

+0

znaczniki są niezdefiniowane, gdy wykonuję 'console.log (scope.tags)'. co może być nie tak – Abhi

2

można również użyć $ zakres zamiast attrs. wtedy otrzymasz obiekt tablicy, w przeciwnym razie otrzymasz ciąg znaków.

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


link: function(scope, element, attrs){ 
      scope.tags = scope.tags 
     } 
Powiązane problemy