【发布时间】:2017-02-28 09:50:14
【问题描述】:
我正在使用md-data-table,并且添加了基于列的排序选项。 下面,展示了我的 html(pug 格式) 代码:
table(md-table md-row-select multiple='' ng-model='vm.selected' md-progress='promise')
//- columns
thead(md-head class='back-color')
tr(md-row)
th(md-column ng-click='vm.orderingBy(name)')
span Name
th(md-column ng-click='vm.sortingBy(code)')
span Code
//- rows
tbody(md-body)
tr(md-select='record' md-select-id='id' ng-repeat='record in vm.records | orderBy:vm.orderByColumn)
//- name
td(md-cell)
p(ng-hide='vm.columns.edit') {{record.name}}
md-input-container(ng-if='vm.columns.edit' class='no-errors-spacer md-no-margin')
input(ng-model='record.name' md-select-on-focus)
//- code
td(md-cell)
p(ng-hide='vm.columns.edit') {{record.sorting_code}}
md-input-container(ng-if='vm.columns.edit' class='no-errors-spacer md-no-margin')
input(ng-model='record.code' md-select-on-focus)
我的 AngularJS(Javascript) 代码如下所示:
vm.orderByColumn = 'name';
vm.orderingBy = function(ordering) {
vm.orderByColumn = ordering;
}
问题是当表格按“代码”排序时,我正在尝试编辑记录的代码,当您更改代码的值时,记录的顺序会发生变化。所以,结果很混乱。 我正在考虑是否有任何方法可以在我处于编辑模式时冻结订单。
【问题讨论】:
-
@Dimitris 是
vm.records动态变化还是只更新一次? -
@Jannu vm.records 更新了一次。
-
如果是一次更新,可以将
ng-repeat='record in vm.records...换成ng-repeat='record in ::vm.records...使用一次绑定
标签: javascript html angularjs angularjs-orderby