如何在单击“添加”按钮时添加一行按钮

How to add a row on click of a "Add" button in angularJS

本文关键字:添加 按钮 一行 单击      更新时间:2023-09-26

我想在单击" add "按钮时在表中添加一行。我试图使用"ng-show"指令来实现这一点,但即使没有单击"添加"按钮,该行也会显示。请帮我一下。下面是代码-

home.html -

    <table class="table">
        <thead>
          <tr>
            <th>SNo.</th>
            <th>UserId</th>
            <th>Name</th>
            <th>Share</th>
            <th>Paid</th>
          </tr>
        </thead>
        <tbody ng-repeat="member in members">
           <tr>
             <td>{{member.sNo}}</td>
             <td>{{member.id}}</td>
             <td>{{member.name}}</td>
             <td>{{member.share}}</td>
             <td>{{member.paid}}</td>
           </tr>
           <tr ng-show="show" class="ng-hide"> //the row which is to be added
             <td><span>{{counter}}</span></td>
             <td><input type="text" required ng-model="new.id"></td>
             <td><input type="text" required ng-model="new.name"></td>
             <td><input type="text" required ng-model="new.share"></td>
             <td><input type="text" required ng-model="new.paid"></td>
           </tr>    
       </tbody>
     </table>
    <div><input type="button" value="Add" ng-click="addMember()"/></div>

controller.js -

expmodule.controller('expenseForm', function($scope, sharedProperties) {
 var id, expenses = {};
 $scope.show = false;
 $scope.members = [{
  sNo: "1",
  id: "abc@gmail.com",
  name: "Neha",
  share: 200,
  paid: 400,
 }, {
  sNo: "2",
  id: "xyz@gmail.com",
  name: "Sneha",
  share: 200,
  paid: 400,
}];
$scope.counter = $scope.members.length++;
$scope.addMember = function () {
  $scope.show = true;
  return $scope.newRow = true;
}
});

你在找这样的东西吗?http://plnkr.co/edit/jxXX5sWhgmYrANV7ieKM?p=preview

问题中提供的代码中很少有不正确的地方。

  1. 添加行在ng-repeat中。因此,将为每个成员添加新的添加行。
  2. 同样,由于show变量在ng-repeat中,它将是parent作用域的子变量,并且根据当前逻辑始终为false。
  3. $scope.counter = $scope.members.length++这将使数组长度增加1,并且数组中的新对象将未定义。我猜你想在新添加行中显示计数器。可以这样简单地完成—在add行中添加{{members.length + 1}},而不是为此创建一个新的作用域变量。此外,当添加新成员时,它将始终具有最新的值。
  4. addMember函数中的return语句有一个赋值操作。

看起来运行良好(参见下面的演示)。


<子>当然,您应该将ng-repeat="member in members"放置到<tr>而不是<tbody>(除非您想要有多个tbody)。

<子>您应该将$scope.counter = $scope.members.length++;更改为$scope.counter = $scope.members.length + 1;


这个<<p>看到,strong>短演示。