2012-12-06 50 views
1

在角創建主從下面給出的對象 -使用模型

function PersonCtrl(){ 
    $scope.persons = [{name: "Mike", age:21, 
        occupation:{qualification: "engineer", company:"Intel"}}]; 
} 

和下面的DOM -

<ul> 
    <li ng-repeat="person in persons"> 
     Name : {{person.name}} 
     <div ng-model="person.occupation"> 
     Qualification : {{person.occupation.qualification}} 
     </div> 
    </li> 
</ul> 

我有他們的名字必須顯示在列表中的人員名單。現在,我將首先加載數據,而不需要任何細節,在這種情況下,該人員的資格。

當有人點擊該人的姓名時,我會檢索到人的詳細信息。我想只是改變模型,即將資格詳細信息添加到該人的模型,然後創建DOM。

控制這一點的一種方法是使用ng-show,並設置其表達式,以便它只顯示限定div,如果當限定對象具有值時。但是這也會導致爲每個人創建細節div,從而對性能造成不利影響。

當表達式計算結果爲真或假時,有沒有方法可以通過角度創建/銷燬dom?

+0

[有條件地在ng-repeat塊中添加元素]的可能重複(http://stackoverflow.com/questions/13461015/conditionally-adding-elements-in-ng-repeat-block) –

回答

2

如果我們想要有條件地刪除/添加部分DOM,ng-switch指令系列(ng-switch,ng-switch-when,ng-switch-default)會很方便。

0

如果細節數據很小,並且沒有花費鉅額費用或者是否允許當前用戶查看它,那麼我會說渲染它並且最初隱藏它。保持摺疊狀態只是讓用戶不要考慮這些細節,除非他們想要某些記錄。

如果檢索/計算很大或昂貴,或者有些規則禁止某些用戶看到某些細節,那就不同了。在這種情況下,我只會渲染「按鈕」來訪問它,並在請求時通過ajax加載細節。