2013-07-29 120 views
4

是否可以更改模板ng-repeat用於動態呈現每個元素,如同在選擇從表格/列表視圖到備選視圖的元素切換時一樣,僅顯示該元素?AngularJS動態更改ng-repeat指令的模板

我想要的是,在ng-repeat表/列表中選擇一個元素後,只切換到所選元素的顯示。但我想保留ng-repeat結構(過濾器,分頁),因爲我希望能夠一次一個地瀏覽每個元素(左和右說),並且在任何時候返回到表/列表及其結構到位。

也許使用新模板切換到新路線會更容易一旦選擇了某個元素,但是如何才能維護僅導航過濾的項目並在返回到該路線時恢復爲保存狀態ng-repeat

我希望我解釋得很好,提前謝謝。

回答

10

您可以在ng-repeat指令中使用ng-switch指令。這裏有一個基本的例子:

<ul> 
    <li ng-repeat="color in colors" ng-switch on="color.value" > 
    <span ng-switch-when="orange" style="background-color:{{color.value}};">{{color.name}}</span> 
    <span ng-switch-default>{{color.name}}</span> 
    </li> 
</ul> 

Full jsFiddle

UPDATE

在評論忍者褲子明確的最終目標是使用ng-include包括模板。下面是更新後的代碼片段展示瞭如何做到這一點:

<ul> 
    <li ng-repeat="color in colors" ng-switch on="color.value" > 
    <span ng-switch-when="orange" ng-include src="'template.html'"></span> 
    <span ng-switch-when="indigo" ng-include src="'template2.html'"></span> 
    <span ng-switch-default>{{color.name}}</span> 
    </li> 
</ul> 

and a 。

+0

甚至沒有想過嘗試使用ng-switch,謝謝!那麼我可以使用ng-switch和ng-include來交換模板嗎? – adamK

+0

似乎是可能的。由於我沒有任何template.urls在jsFiddle上工作,所以很難演示。我嘗試使用jsFiddle標誌URL作爲我的模板URL,它有點作品,所以我猜測可以使用ng-includes - http://jsfiddle.net/brettdewoody/X3aAU/ –

+0

這是行不通的,我創建了一個Plunker嘗試全面實施 - http://plnkr.co/edit/WZBJJNCkwAJhPwAJrOZS?p=preview –