添加哈希并使用ng-repeat动态更新DOM元素

时间:2015-09-29 11:50:46

标签: angularjs dom hash angularjs-ng-repeat ng-repeat

我有以下用户哈希:

{"A1": {name: "Demo-1", status: "active"}, "A2": {name: "Demo-2", status: "deactive"}};

我有两个主动/非主动用户哈希,我将每个用户的表格如下:

<tr ng-repeat="(id, user) in deactiveUsers">
      <td>
        {{ user.name }}
      </td>
      <td>
         <button type="button" ng-click="change(id)">Active</button>
      </td>

</tr>

如果我点击Active按钮,我会从deactiveUsers中移除该对象,并将其添加到activeUserschange功能中,如下所示:

$scope.change = function(id){
 if($scope.users[id].status == "active"){
   delete $scope.activeUsers[id];
   $scope.users[id].status = "deactive";
   $scope.deactiveUsers[id] = $scope.users[id];
 }else{
   delete $scope.deactiveUsers[id];
   $scope.users[id].status = "active";
   $scope.activeUsers[id] = $scope.users[id];

 }
}

这是我的demo,如果我在plnkr上尝试它,它运作良好。但是在我的localhost上,删除只是工作,当我添加activeUsers时,DOM元素不会使用新记录进行更新。

我无法找到问题所在。

  1. 如何添加Hash以动态更新DOM元素?

  2. 为什么它在plnkr上工作,但是相同的代码不能在localhost上工作?

1 个答案:

答案 0 :(得分:3)

DOM中有多个body标签。我认为第一个(在第一个表元素之后)导致其他角度指令在app之外。 用tbody元素替换表元素中的主体。

编辑问题的所有者

我的错误是我开发了以下表格:

<div class="panel panel-primary" ng-controller="ExampleCtrl">
  <table></table>
</div>
<div class="panel panel-primary" ng-controller="ExampleCtrl">
  <table></table>
</div>

所以,我两次打电话给ng-controller,我通过为两者开发一个div来修复它,如下所示:

<div ng-controller="ExampleCtrl">
  <div class="panel panel-primary">
    <table></table>
  </div>
  <div class="panel panel-primary">
    <table></table>
  </div>
</div>