【问题标题】:how to change record on runtime in table using ng-model如何使用 ng-model 在表中更改运行时记录
【发布时间】:2017-12-19 17:55:39
【问题描述】:

如何在 Table 中使用ng-model 并在运行时更改值,

我在表上有多个记录显示,有两个 <td> 有日期选择器,开始日期,结束日期。我想在多行中更改日期,当我使用 ng-model 更改日期特定行时,它会更改所有行的日期,如何使用 ng-model 更改特定行数据,

<tr ng-repeat="row in showAddedAssets  ">           
 <td >  <md-datepicker  id="startmd"name="plainnedstartdate" ng-change="createCampaign.changedate(row)"  ng-model="createCampaign.assets_planned_start_date" required></md-datepicker></td>
 <td  >  <md-datepicker name="plainnedenddate"  ng-change="createCampaign.changedate(row)" ng-model="createCampaign.assets_planned_end_date" required></md-datepicker></td>
                  </tr>
                  </tbody>
</table>

JS 文件

changedate(assetitem)
 {
   assetitem.assets_planned_start_date = this.assets_planned_start_date ;
   assetitem.assets_planned_end_date  = this.assets_planned_end_date;
 }

【问题讨论】:

    标签: angularjs angularjs-ng-repeat


    【解决方案1】:

    你应该为每个行项添加不同的 ng-model

    <tr ng-repeat="row in showAddedAssets  ">
        <td>  <md-datepicker id="startmd" name="plainnedstartdate" ng-change="changedate(row)" ng-model="row.createCampaign.assets_planned_start_date" required></md-datepicker></td>
        <td>  <md-datepicker name="plainnedenddate" ng-change="changedate(row)" ng-model="row.createCampaign.assets_planned_end_date" required></md-datepicker></td>
    </tr>
    

    因此,您可以在控制器中更新该行的日期

    $scope.changedate = function(row)
     {
       row.assets_planned_start_date = some_date;
       row.assets_planned_end_date  = some_date;
     }
    

    【讨论】:

      【解决方案2】:

      你应该改变html

      <tr ng-repeat="row in showAddedAssets ">           
       <td >  <md-datepicker  id="startmd_{{$index}} "name="plainnedstartdate" ng-change="createCampaign.changedate(row)"  ng-model="row.assets_planned_start_date" required></md-datepicker></td>
       <td  >  <md-datepicker id="endmd_{{$index}}" name="plainnedenddate"  ng-change="createCampaign.changedate(row)" ng-model="row.assets_planned_end_date" required></md-datepicker></td>
                        </tr>
      

      和js文件 因为你想改变所有的行,所以你应该使用 angular.forEach 来完成这项工作。

          changedate(row)
           {
             angular.forEach(this.showAddedAssets , function(item){
                      item.assets_planned_start_date = row.assets_planned_start_date;
                      item.assets_planned_end_date = row.assets_planned_end_date
              })
           }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-12
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        相关资源
        最近更新 更多