AngularJS ng-include non include la vista a meno che non venga passato in $ scope


121

È sbagliato presumere che ngIncludepossa prendere un percorso grezzo? Continuo a provare a impostare il mio ngIncludecome segue:

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

Questo non funziona ma se faccio qualcosa del genere funziona.

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

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

Nel mio index.html

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

Fa ngIncludetranne Soltanto valori fuori del campo di applicazione? Se è così, perché è in questo modo e non è un'inclusione diretta del parziale html.

Risposte:


327

ng-includeaccetta un'espressione. Se vuoi specificare l'URL esplicito direttamente lì, devi fornire una stringa.

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

Sì, l'ho appena visto. Gli esempi che stavo guardando stavano usando una versione precedente di angular.
Ciad

44
Ho passato molto tempo questo pomeriggio a cercare di capire questo. Di Naturalmente ha bisogno di essere una stringa. Questo ha perfettamente senso.
Code Whisperer

non funziona con ngSanitize abilitato nel modulo dell'app. Sto cercando una soluzione.
Dida

4
Un'altra cosa: la pagina non può avere trattini bassi come nome file.

5
Le virgolette singole piccole risolvono il problema. Non ho potuto vedere il cambiamento esatto (il mio povero occhio). Si prega di menzionare aggiungere virgolette singole all'interno delle virgolette doppie in parole.
Fizer Khan

1

ng-include, poiché altre direttive ( ng-class, ng-src...) valutano un'espressione angolare dall'ambito. Senza virgolette ( ''), cercherà una variabile dell'ambito.


Tieni presente che non è necessario specificare l' srcattributo.

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

Può essere riscritto in: (che è più semplice)

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

Puoi anche usare ng-include come elemento :

<ng-include src="'views/header.html'"></ng-include>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.