我有以下代码:
<div ng-repeat="module in modules" id="{{module.Id}}">
<ng-include ng-init="bootstrapModule(module.Id)" src=""></ng-include>
</div>
我希望能够在 src 中构建一个字符串,如下所示:
/modules/{{module.Name}}/{{module.Name}}.tpl.html
但我不断遇到障碍。我尝试使用回调函数来构建它,
$scope.constructTemplateUrl = function(id) {
return '/modules/' + id + '/' + id + '.tpl.html';
}
但这被一遍又一遍地调用,它似乎不喜欢这样。我也尝试像这样构造它:
ng-src="/modules/{{module.Id}}/{{module.Id}}.tpl.html"
但这也行不通。与其花几个小时在灌木丛中跳动,我想知道是否有其他人遇到过这样的事情并有任何想法?
此外,当我从$resource获取模块时,我使用 $q 异步返回它们,所以我似乎无法在控制器中之前将其添加到模块中,因为$scope.modules
刚好等于一个then
函数在这一点上。
有什么想法吗?
ngInclude | src
指令需要一个角度表达式,这意味着你应该写
ng-src="'/modules/' + module.Id + '/tpl.html'"
从 http://docs.angularjs.org/api/ng.directive:ngInclude
ngInclude|src 字符串角度表达式计算为 URL。如果 source 是一个字符串常量,请确保将其括在引号中,例如 src="'myPartialTemplate.html'"。
如果在模型中构建 url 而不是内联 HTML 可能会更好
<div ng-repeat="module in modules" id="{{module.Id}}">
<ng-include src="module.url"></ng-include>
</div>