2013-09-24 41 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