Javascript 如何使用md order by属性对md数据表上带有日期的列进行排序

Javascript 如何使用md order by属性对md数据表上带有日期的列进行排序,javascript,angularjs,datatable,angular-material,Javascript,Angularjs,Datatable,Angular Material,我试图允许在AngularJS中对包含日期的a列进行排序。这些日期是格式为DD/MM/YYYY的字符串。我无法正确订购。我尝试调用一个函数,该函数从mdorderby属性返回日期的时间戳,但它甚至没有调用该函数。当前代码如下,我试图订购的列是Fecha Naciminto: <table md-table md-row-select="options.rowSelection" multiple="{{options.multiSelect}}" ng-model="selected"

我试图允许在AngularJS中对包含日期的a列进行排序。这些日期是格式为DD/MM/YYYY的字符串。我无法正确订购。我尝试调用一个函数,该函数从mdorderby属性返回日期的时间戳,但它甚至没有调用该函数。当前代码如下,我试图订购的列是Fecha Naciminto:

 <table md-table md-row-select="options.rowSelection" multiple="{{options.multiSelect}}" ng-model="selected"
         md-progress="promise">
    <thead md-head md-order="query.order">
    <tr md-row>
      <th md-column md-order-by="id"><span>Identificador</span></th>
      <th md-column md-numeric md-order-by="fechaTimestamp(fechaNacimiento)"><span>Fecha Nacimiento</span></th>
      <th md-column md-order-by="sexo"><span>Sexo</span></th>
      <th md-column md-numeric md-order-by="altura"><span>Altura(cm)</span></th>
      <th md-column><span>Grabaciones</span></th>
      <th md-column><span>Atributos extra</span></th>
    </tr>
    </thead>
    <tbody md-body>
    <tr md-row md-select="paciente" md-on-select="logItem" md-auto-select="options.autoSelect"
        ng-repeat="paciente in pacientes.data | filter: filter.search | orderBy: query.order | limitTo: query.limit : (query.page -1) * query.limit">
      <td md-cell ng-click="editarCampo($event, paciente, 'identificador')"
          ng-class="{'md-placeholder': !paciente.id}">{{paciente.id || 'Añadir identificador'}}
      </td>
      <td md-cell ng-click="editarFecha($event, paciente)" ng-class="{'md-placeholder': !paciente.fechaNacimiento}">
        {{paciente.fechaNacimiento
        || "Añadir fecha nacimiento"}}
      </td>
      <td md-cell>
        <md-select ng-model="paciente.sexo" name="sexo" ng-change="editarSexo(paciente)" placeholder="Sexo" required>
          <md-option value="Hombre">Hombre</md-option>
          <md-option value="Mujer">Mujer</md-option>
          <md-option value="Otro">Otro</md-option>
        </md-select>
      </td>
      <td md-cell ng-click="editarCampo($event, paciente, 'altura')"
          ng-class="{'md-placeholder': !paciente.altura}">{{paciente.altura || 'Añadir altura'}}
      </td>
      <td md-cell>
        <md-button ng-click="redirect('grabaciones/' + paciente.id)"
                   style="background: lightgrey;" ng-show="paciente.grabaciones"
                   title="Ver grabaciones de {{paciente.id}}">Ver
        </md-button>
      </td>
      <td md-cell>
        <md-button ng-click="verAtributosExtra($event,paciente)" ng-show="paciente.extra"
                   style="background: lightgrey;"
                   title="Ver información extra de {{paciente.id}}">Ver
        </md-button>
        <md-button ng-click="verAtributosExtra($event,paciente)" ng-hide="paciente.extra"
                   style="background: lightgrey;"
                   title="Añadir atributos extra a {{paciente.id}}">Añadir
        </md-button>
      </td>
    </tr>
    </tbody>
  </table>

识别器
费夏纳西门托酒店
性感
阿尔图拉(厘米)
地堑
额外心房肌
{{paciente.id | |'Añadir identificador'}
{{paciente.fechaNacimiento
||“Añadir fecha nacimiento”}
霍姆布雷
穆杰尔
奥特罗
{{paciente.altura | |'Añadir altura'}}
版本
版本
阿尼亚迪尔

提前感谢。

调用
md order by
上的函数不起作用。因此,您需要做的是更改
pacients.data
对象的日期属性。你是说你收到的是DD/MM/YYYY字符串的形式,对吗?因此,只需操纵pacients.data数组并将date属性更改为对象,其自身属性为value&ts(timestamp)。在视图中,您可以绑定
date.vale
&在
md order by
中,您可以绑定
date.ts

对于操纵,我创建了一个函数为的示例:

$scope.addDateTimestamps = function() {
    var arrData = $scope.pacientes.data;
    var newData = arrData.map(function(item,index) {
        var dateString = item.date;
        var dateParts = dateString.split("/");
        var dateObject = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
        item.date = {'value': dateString, 'ts': dateObject.getTime()};
        return item;
    });
    $scope.pacientes.data = newData;
}
因此,此函数将DD/MM/YYYY日期转换为dateobject&然后获取时间戳。当您从服务获取数据并创建模型时,调用此函数。 您可以按照下面的代码笔操作,我在其中添加了带有字符串值的日期字段,并根据时间戳进行绑定和排序

或者,您甚至可以将date属性从array objects string更改为timestamp&然后在视图中,您可以使用date filter以不同的格式显示它&以md order by just date(ts)属性显示


非常好用,非常感谢您的回复