2013-06-28 43 views
1

我一直在使用路由,我已經看到如何使用路由和視圖模板更新ng-view ..但是我遇到的問題是我正在進行一個REST調用,並且取決於我從響應中獲得的內容我希望用視圖模板更新DOM的一部分,但我不想涉及路由。AngularJS:使用控制器中的模板更新視圖?

有誰知道我該怎麼做?或任何例子將是巨大的

在此先感謝

+0

掛上..你提到你不想要路由,所以我下面的答案是無效的 - 爲什麼你不想路由? – callmekatootie

+0

我正在尋找替代品,在jQuery的日子裏,我不能用模板替換DOM中的ID的內容。如果我必須使用路由,那麼很好,但我不想更改路由來更新顯示,說服務出現錯誤,例如 – Martin

+0

如果發生錯誤,您可以在相同的視圖中顯示錯誤你現在在,不是嗎?只有在成功的情況下,你才能改變路線。 – callmekatootie

回答

1

另一個答案。根據你在評論中的描述,這聽起來像你希望有條件地顯示DOM的一部分。

當你要有條件地顯示DOM的一部分,您有以下選擇:

使用ng-showng-hide指令。
根據從RESTful調用返回的內容,可以設置一個模型來識別需要顯示的DOM。舉個例子:

<div ng-show="status"> 
    This text will be shown only when the status is truthy 
</div> 
<div ng-hide="status"> 
    This text will be shown only when the status is false. 
</div> 

內部控制器,然後你可以設置status爲true或基於REST風格的來電,並根據您希望顯示的RESTful後調用該DOM的一部分假的。

您可以使用ng-switch指令
雖然ng-showng-hide指令會顯示你的DOM有條件的內容,這是任何人都可以簡單地打開源文件,看到兩者的內容,ng-switch指令將加載內容僅基於哪種情況符合swtich。舉例:

<div ng-switch on="status"> 
    <div ng-switch-when="true"> 
     This text will be shown only when the status is truthy. 
     Else this is completely hidden and cannot be seen even 
     when looking at the source. 
    </div> 
    <div ng-switch-when="false"> 
     This text will be shown only when the status is false. 
     Else this is completely hidden and cannot be seen even 
     when looking at the source. 
    </div> 
</div> 

當狀態爲真時顯示第一個子div,否則它根本沒有顯示。與ng-showng-hide相比,優勢在於如果未滿足該情況,DOM將不包含子元素。

+0

謝謝...正是我在找我.. – Martin

0

$location.path()可以在這裏使用。

因此,在您的父控制器中,您可以進行REST調用。一旦你有了你的數據,你就可以決定採取哪條路線。路由值進入path()函數。例如,假設您的REST調用返回櫻桃,您需要採取/foo路徑(其中,根據您的$routeProvider將加載與該路由相關聯的模板)。然後,您可以編寫如下:

$location.path('/foo'); 

,它會加載/富路 - $routeProvider會再取加載與該路徑相關聯的模板的照顧。

參考:$location

相關問題