AngularJS, ng-repeat with ng-include not rendering

匿名 (未验证) 提交于 2019-12-03 01:39:01

问题:

Hi I am starting to learn angular and I'm running into a problem when I use a combination of ng-repeat with ng-include. No matter what I do I cannot get the templates to render. I have a simple controller that creates a list of workspaces and each workspace has a TemplateUrl property.

I know the value is correct because if I just render out the raw text {{workspace.TemplateUrl}} and then put that directly into the ng-include it works no problem. It just never seems to work when its coming from the controller. I have tried putting the template path in quotes like this too but it makes no difference.

$scope.Workspaces.push(new Workspace("'/app/templates/Template1.html'", "Workspace 1"));

When I run it I am seeing no requests to pull the template. Can anyone help on this as its driving me a little nuts.

<!DOCTYPE html> <html ng-app> <head>     <title>Workspaces</title>     <!-- Bootstrap -->     <link href="css/bootstrap.css" rel="stylesheet" media="screen">     <script src="app/libraries/jquery.js"></script>     <script src="app/libraries/bootstrap.min.js"></script>     <script src="app/libraries/angular.js"></script>     <script src="app/app.js"></script> </head>  <body ng-controller="HostController">     <div>         <ul class="unstyled">             <li ng-repeat="workspace in Workspaces">                 <p>{{workspace.TemplateUrl}}</p>                 <hr />                 <div ng-include="{{workspace.TemplateUrl}}"></div>             </li>         </ul>     </div>  </body> </html>

Controller code

 var Workspace = (function () {         function Workspace(templateUrl, name) {             this.TemplateUrl = templateUrl;             this.Name = name;         }         return Workspace;     })();     function HostController($scope) {         $scope.Workspaces = new Array();         $scope.Workspaces.push(new Workspace("/app/templates/Template1.html", "Workspace 1"));         $scope.Workspaces.push(new Workspace("/app/templates/Template2.html", "Workspace 2"));         $scope.Workspaces.push(new Workspace("/app/templates/Template1.html", "Workspace 3"));         $scope.Workspaces.push(new Workspace("/app/templates/Template2.html", "Workspace 4"));         $scope.Workspaces.push(new Workspace("/app/templates/Template1.html", "Workspace 5"));     }

回答1:

I quote Your code

 <div ng-include="{{workspace.TemplateUrl}}"></div>

should be

 <div ng-include="workspace.TemplateUrl"></div>

since it is a ng statement.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!