使用ng表进行内联行编辑

时间:2015-10-30 14:18:30

标签: javascript angularjs ngtable

大家好,

我正在尝试使用ng表实现内联行编辑

当我点击编辑图标然后我更改了值然后我点击了保存图标我就得到了以下错误

TypeError:无法读取属性' untrack'未定义的

请找到plunker Inline row edit using ng table for details coding

<table
        class="alignment table table-striped table table-bordered table-hover table-condensed editable-table demoTable"
        ng-table="tableParams" ng-show="showTable" ng-form="tableForm"  demo-tracked-table="tableTracker">
        <colgroup>
        <col width="45%" />
        <col width="45%" />
        <col width="10%" />

    </colgroup>

    <tr ng-repeat="row in $data" ng-form="rowForm" demo-tracked-table-row="row">

        <td data-title="'INR Rate'" ng-switch="row.isEditing" ng-class="inrRate.$dirty ? 'bg-warning' : ''" ng-form="inrRate" demo-tracked-table-cell>
            <span ng-switch-default class="editable-text">{{row.INRRate}}</span>
            <div class="controls" ng-class="inrRate.$invalid && inrRate.$dirty ? 'has-error' : ''" ng-switch-when="true">
                <input  type="number" name="inrRate" ng-model="row.INRRate" class="editable-input form-control input-sm" required />
            </div>
        </td>

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,但在调查示例代码后没有运气。 我修改了代码,它一直运行到现在。

  1. 请勿使用“ngTableSimpleList”。它只是表的数据集,由作者在示例代码中定义。
  2. 似乎可以安全地删除tableTracker.untrack(行)。
  3. 但是,var originalRow = resetRow(row, rowForm);会得到一个nil值,导致值无法正确恢复,因为_.findWhere是一个异步方法。所以我用for循环替换它。

    function resetRow(row, rowForm) {
        row.isEditing = false;
        rowForm.$setPristine();
        //self.tableTracker.untrack(row);
        for ( let i in originalData){
            if(originalData[i].id === row.id){
                return originalData[i]
            }
        }
        //return _.findWhere(originalData, function(r) {
         //   return r.id === row.id;
        //});
    }
    

答案 1 :(得分:2)

您正在注射sum而不是NgTableParams - 请参阅工作:fixed example

ngTableParams