2016-06-20 15 views
1

Ich habe versucht, ein generisches Attribut in angular js-Komponente zu binden. Meine Komponente enthält eine Textbox. Was ich brauche ist, dass ich ein HTML-Attribut an die Komponentenvorlage übergeben möchte. dieHTML-Attribut an angular js 1.5-Komponente übergeben

<sample-component generic-attribute="ng-class='hello'"></sample-component> 

Das ist mein Haupt HTML-Komponente ist. Ich muss ng-Klasse an meine Komponentenvorlage übergeben.

(function() { 
     angular.module('myApp').component('sampleComponent',{ 
      bindings: { 
       genericAttribute:'@?' 
       }, 
      controllerAs:'ctrl', 
      controller: 'sampleController',   
      template:'<input type="text" {{ctrl.genericAttribute}} > 
      }); 
})(); 

Ist es möglich, das gesamte Attribut zu übergeben und es in der Vorlage zu binden.

+0

Sie können die Klasse innerhalb des Attributs übergeben, wenn Sie möchten. Gibt es einen Grund, warum Sie das Attribut auch übergeben möchten? – gyc

+1

So wird es üblich sein. Das heißt, Entwickler kann ng-Klasse, ID usw. auf demselben Schlüssel übergeben. zB

Antwort

1

Etwas, das Sie versuchen können, ist $compile in der Vorlagengenerierungsfunktion zu verwenden. Dies sollte Ihnen den Anfang machen:

(function() { 
    angular.module('myApp').component('sampleComponent',{ 
     bindings: { 
      genericAttribute:'@?' 
      }, 
     controllerAs:'ctrl', 
     controller: 'sampleController', 
     template: function(tElement, tAttrs) { 
      return $compile('<input type="text"' + {{tAttrs.genericAttribute}}); 
     } 
     }); 
})(); 
+0

Danke für die Antwort. Das kann ich nicht mit einer String-Vorlage erreichen. Kann ich ? –

+0

Die Funktion gibt eine Zeichenfolge an 'template' zurück, so dass die beiden gleichwertig sind. –

+0

Wenn ich das versuchte, bekomme ich '$ kompilieren ist nicht definiert' Fehler. Wie kann ich die Kompilierfunktion an meine Vorlage übergeben? –

Verwandte Themen