定義一個ng-repeat指令遍歷數組時,語法指定ng-repeat="friend in friends"
,然後在模板中使用interoplation運算符,如{{friend.name}}
。我可以在ng-repeat循環中避免對象變量名嗎?
是否有可能將屬性分配給當前項目範圍,而不是其中的變量?所以我可以撥打{{name}}
而不是{{friend.name}}
?
原因是我的指令被用在兩個不同模板的範圍內 - 例如我可能有一個指令"userActions"
,它既用於中繼器也用於不相關的模板,其中{{friend.name}}
沒有使用感。我想避免人爲地製造不具有語義含義的對象。
我的使用情況是這樣的:
我呈現不同類型的塊網格。一些僞代碼:
<div ng-repeat="block in blocks">
< cat block />
< friend block >
<userActions directive />
</ friend block >
< guitar block />
.... more blocks
</div>
我也有一個朋友頁,包含完全相同的用戶操作:
..fragment of friend page..
<element ng-control="friend">
<userActions directive />
</element>
現在,如果我想用戶塊的屬性中繼器裏面,語法是{{block.name}}
。所以userActions
的模板包含這個。
但是,一旦我在的好友頁面中使用此模板,我必須創建{{block.name}}
範圍內的好友控制器。這雖然沒有意義,因爲塊只存在於塊網格的上下文中。我不應該創建block
。
我想要做的就是從userActions
指令模板中調用{{name}}
,因爲塊作用域和控制器都包含它。我不想創建block
對象,然後在我想要使用userActions
指令的每個範圍內人爲設置block.name
。
這裏有一個jsFiddle to illustrate the cause
我在這裏假設您提供的示例僅用於說明目的,您所嘗試的內容更復雜?你能否描述你正在嘗試做什麼?朋友和街區之間應該有一些共同之處 - 是的?否則它沒有任何意義,你使用相同的模板爲他們兩個。 – ganaraj 2013-04-04 15:25:27
順便說一句,這是一個解決你的問題的小提琴。不知道這是你在找什麼。您需要注意的是,我們現在正在創建一個隔離範圍。 http://jsfiddle.net/b7KEm/6/ – ganaraj 2013-04-04 15:28:09
是的小提琴只是一個簡化的例子。很明顯,我的應用程序要複雜得多:)讓我詳細說明 - Block表示幾個可能實體的視圖。其中一個實體是「朋友」。每個朋友實體都有一組可以與之關聯的用戶操作。對於我們的例子 - 行動是「殺」和「擁抱」。這些操作可以從朋友頁面的上下文以及朋友頁面的* both *中執行。它們包含相同的模板和邏輯,因此共享相同的指令。 – OpherV 2013-04-04 17:46:57