2013-04-30 8 views
50

Ich habe derzeit ein Problem, wenn ein Array über ein Attribut dieser Direktive an eine Direktive übergeben. Ich kann es als String lesen, aber ich brauche es als Array, also ist das, was ich gefunden habe, aber es funktioniert nicht. Helfen Sie jemandem? thks im VorausÜbergabe Array über Attribut an AngularJS Direktive

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

Antwort

55

Wenn Sie das Array von Ihrem Umfang zugreifst, dh in einem Controller geladen, können Sie nur den Namen übergeben der variablen:

Binding array to directive variable in AngularJS

Richtlinie:

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

Vorlage:

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

Was ist, wenn es sich um ein Inline-Array handelt: 'tags =" [1, 2, 3] "'? Edit: Ich habe meine Antwort hier gefunden: https://stackoverflow.com/q/20811527/3328979 – Arashsoft

+0

Tags ist undefiniert, wenn ich 'console.log (scope.tags)'. was könnte falsch sein – Abhi

2

Sie können auch $ Umfang statt attrs zu verwenden. Dann erhalten Sie Array-Objekt, sonst erhalten Sie eine Zeichenfolge.

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


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