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

假设 ngInclude可以采用原始路径是错误的吗?我一直试图设置我的 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;
});

在我的索引中

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

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

69037 次浏览

ng-include 接受一个表达式。 如果要直接在这里指定显式 URL,必须给出一个字符串。

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

ng-include ,作为范围内的其他指令(ng-classng-src...) 计算角表达式。如果没有引号('') ,它将搜索范围的变量。


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

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

可以重写为: (这更简单)

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

也可以使用 n- 包含作为 元素:

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