AngularJS ng-include does not include view unless passed in $scope

ng-include, as other directives (ng-class, ng-src ...) evaluates an Angular expression from the scope. Without quotes (''), it will search for a variable of the scope.


Note that you don't have to specify the src attribute.

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

Can be rewritted to: (that is simpler)

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

You can also use ng-include as an element:

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

ng-include accepts an expression. If you want to specify the explicit URL directly in there, you have to give a string.

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