2013-09-24 38 views
27

我有以下代码:如何动态构建ng-include src?

<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函数在那时候。

任何想法?

+0

你得到了什么错误可能是更好吗? –

回答

56

ngInclude | src指令要求的角度表达,这意味着你应该写

ng-src="'/modules/' + module.Id + '/tpl.html'"

http://docs.angularjs.org/api/ng.directive:ngInclude

ngInclude | SRC串角表达式计算到URL。如果 源是一个字符串常量,请确保将其用引号括起来,例如 src =“'myPartialTemplate.html'”。

如果构造URL的模型,而不是内嵌HTML

<div ng-repeat="module in modules" id="{{module.Id}}"> 
    <ng-include src="module.url"></ng-include> 
</div> 
+3

你的方法现在可以工作,但我确信我之前尝试过,我必须一直使用ng-src而不是src。谢谢@rogerz! –

+0

@rogerz - 这也适用于我。在我的例子中,它的工作原理,但我在控制台中得到一个404错误。查看答案:http://stackoverflow.com/a/33299027/828282 任何想法?谢谢 – Paul

+0

'

' – twmulloy