除非在$ scope中传递,否则AngularJS ng-include不包括视图

假设ngInclude可以采取一条原始path是错误的吗? 我一直试图设置我的ngInclude如下:

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

这不起作用,但如果我做这样的事情,它确实工作。

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

在我的index.html

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

ngInclude只包含除范围之外的值吗? 如果是这样,为什么这样,而不是直接包含的HTML部分。

ng-include接受一个expression式。 如果你想直接在那里指定显式的URL,你必须给一个string。

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

ng-include ,因为其他指令( ng-classng-src …)会从范围中计算一个Angularexpression式 。 没有引号( '' ),它会search范围的variables。


请注意,您不必指定src属性。

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

可以重写为:( 更简单)

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

你也可以使用ng-include作为一个元素

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