2014-11-14 16 views
-1

我有一個ng-repeat,裏面有一個包含不同html部分的內容。ng-include在ng-repeat中

<div ng-repeat="item in feedItems"> 
    <div ng-include="'item.itemType.html'"> 
    </div> 
</div> 

例如,如果ITEMTYPE = 40它示出了40.html,如果它是80它示出了80.html(部分的名稱將是固定的,但現在可以保持簡單):

到目前爲止好。我的問題是現在我需要繼續使用部分html內的項目的數據。每個部分都有一個專用控制器,但我相信通過在每個ng-include中添加ng-controller是可行的。

例如:我40.html部分包含:

40.html:

<span>{{item.body.text}}</span> 

80.html:

<h1>{{item.message.text}}</span> 

我甚至不知道我想要什麼實現甚至是可能的。有任何想法嗎?

+0

你是否已經完成了這個並遇到問題?你描述的應該可以正常工作。 ng-include創建一個從ng-repeat中創建的範圍原型繼承的子範圍。在{{item.message.text}}的80.html中的引用應該可以正常工作。有時,原型繼承可能會導致一些意想不到的結果,特別是在處理基元而不是對象時;然而,你的榜樣不應該與這樣的事情發生衝突。你看到了什麼問題或意外的行爲?如果您遇到問題,您可以添加更多代碼和/或Plnkr嗎? – Mike 2014-11-14 16:40:32

+0

這只是一個理論。而現在我得到一個錯誤,因爲item.itemType不轉換爲80或40 – Peddro 2014-11-14 17:56:53

+0

它的工作原理! :) 謝謝! – Peddro 2014-11-14 18:09:24

回答

0

ng-include創建一個子範圍,該範圍從ng-repeat中創建的範圍中原型繼承。在{{item.message.text}}的80.html中的引用應該工作得很好,因爲在該子範圍上沒有定義「item」,所以它將跟隨繼承鏈並在父級上找到「item」或父母的父母)範圍。

原型繼承有時會導致一些意想不到的結果,特別是在處理基元而不是對象時;然而,你展示的例子似乎並沒有出現這種情況。