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,从而对性能不利。

当表达式计算为 true 或 false 时,有没有办法通过 angular 创建/销毁dom?

4

2 回答 2

2

如果我们想有条件地物理删除/添加 DOM 的一部分,那么ng-switch指令系列(ng-switch、ng-switch-when、ng-switch-default)将派上用场。

于 2012-12-06T12:12:18.340 回答
0

如果详细数据很小,并且获取它没有巨大的成本,或者关于是否允许当前用户查看它的规则,那么我会说渲染它并最初隐藏它。保持它折叠只是让用户不要考虑那个细节,除非他们想要它用于某些记录。

如果它很大,或者检索/计算成本很高,或者有规则禁止某些用户查看某些细节,那就不同了。在这种情况下,我只会渲染“按钮”来访问它,并在请求时通过 ajax 加载详细信息。

于 2012-12-06T12:39:58.383 回答