2012-09-20 6 views
120

Ist es falsch anzunehmen, dass ngInclude einen rohen Pfad einnehmen kann? Ich versuche meine ngInclude wie folgt festzulegen:

<div ng-include src="views/header.html"></div> 

Dies funktioniert nicht, aber wenn ich so etwas tun es funktioniert.

// HeaderController 
app.controller('HeaderCtrl', function($scope){ 
    $scope.templates = {[ 
    template: { url: 'views/header.html' } 
    ]}; 

    $scope.template = $scope.templates[0].template; 
}); 

In meiner index.html

<div ng-controller="HeaderCtrl"> 
    <div ng-include src="template.url"></div> 
</div> 

Does ngInclude nur außer Werte aus der Reichweite? Wenn ja, warum ist es so und nicht eine direkte Einbeziehung der HTML teilweise.

Antwort

326

ng-include akzeptiert einen Ausdruck. Wenn Sie die explizite URL direkt dort angeben möchten, müssen Sie eine Zeichenfolge angeben.

<div ng-include src="'page.html'"></div> 
+0

Yea nur sah das. Beispiele, die ich anschaute, waren eine ältere Version von eckig. – Chad

+44

Habe heute Nachmittag viel Zeit damit verbracht, dieses herauszufinden. Natürlich muss es eine Zeichenfolge sein. Das macht * vollständig * sinnvoll. –

+0

funktioniert nicht mit ngSanitize im App-Modul aktiviert. Ich suche nach einer Lösung. – Dida

1

ng-include, wie andere Richtlinien (ng-class, ng-src ...) wertet einen Ausdruck Angular vom Anwendungsbereich. Ohne Anführungszeichen ('') wird nach einer Variablen des Bereichs gesucht.


Beachten Sie, dass Sie das Attribut src nicht angeben müssen.

<div ng-include src="'views/header.html'"></div> 

Kann rewritted werden: (das ist einfacher)

<div ng-include="'views/header.html'"></div> 

Sie auch ng-umfassen als Element verwenden:

<ng-include src="'views/header.html'"></ng-include>