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

时间:2012-09-20 22:35:34

标签: angularjs angularjs-ng-include

假设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;
});

在我的index.html

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

ngInclude除范围外的值以外?如果是这样,为什么会这样,而不是直接包含html partial。

2 个答案:

答案 0 :(得分:327)

ng-include接受表达式。 如果要直接在那里指定显式URL,则必须提供一个字符串。

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

答案 1 :(得分:1)

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

请注意,您不必指定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>