2016-08-08 21 views
2

Ich versuche, die Vorlage einer Seite mithilfe einer Direktive zu parametrisieren. Ich habe ein Array von Objekten mit einem 'type' Wert. Ich möchte verschiedene Vorlagen verwenden, wenn die Typen unterschiedlich sind. HierAngularJS directive templateUrl-Funktion mit 2-Wege-Datenbindung

ist, was ich versucht:

directive.js

angular.module('core') 
    .directive('mySolutionDisplay', function() { 
    return { 
     restrict: 'E', 
     scope: { 
     solution: '=' 
     }, 
     templateUrl: function (elem, attr) { 
     return 'path/to/template/solution-'+attr.type+'.template.html'; 
     } 
    }; 
    }); 

view.html

<div class="row"> 
    <my-solution-display type="vm.solution[0].type" solution="vm.solution"></my-solution-display> 
</div> 

bekomme ich folgende Fehlermeldung: angular.js:11706 Error: [$compile:tpload] Failed to load template: path/to/template/solution-vm.solution[0].type.template.html

Ich habe versucht, type="vm.solution[0].type" durch type="{{vm.solution[0].type}}" zu ersetzen, aber es fügte nur die geschweiften Klammern zur Fehlermeldung hinzu.

+0

+0

geändert wurde, haben Sie so versucht, ich denke, bei type = „“ es nicht den Variablennamen auflösen und Sie kann versuchen, die geschweiften Klammern dort –

Antwort

0

Attribute (attrs) hat keinen Zugriff auf die Bereichsvariable. Sie erhalten den Dom-Wert, nachdem sie interpoliert wurden.

So verwenden

<my-solution-display type="{{vm.solution[0].type}}" solution="vm.solution"> </my-solution-display>

Beachten Sie, wie type="vm.solution[0].type"-type="{{vm.solution[0].type}}"

+0

Ich habe schon versucht, aber es fügt nur die geschweiften Klammern in der Fehlerbeschreibung. 'angular.js: 11706 Fehler: [$ compile: tpload] Laden der Vorlage fehlgeschlagen: Pfad/zu/Vorlage/Lösung - {{vm.solution [0] .type}}. Template.html' – JulienM

+1

Ja, ignoriere meine Antworten. Sieht so aus, als ob das nicht möglich ist. Siehe den Fehler: https://github.com/angular/angular.js/issues/13526. Werfen Sie einen Blick auf: http://stackoverflow.com/questions/21835471/angular-js-directive-dynamic-templateurl für eine andere Möglichkeit, dieses Problem zu lösen. – Chanthu