AngularJs Ng-Grid:使用过滤器进行多属性绑定

时间:2013-11-08 07:51:17

标签: javascript angularjs ng-grid

我有Json对象:

[
   {name: "Moroni", age: 50, dob: 30051998, tob: 1005},
   {name: "Tiancum", age: 43, dob: 30051987, tob: 2205},
   {name: "Jacob", age: 27, dob: 30051956, tob: 0605},
   {name: "Nephi", age: 29, dob: 30051978, tob: 1605},
   {name: "Enos", age: 34, dob: 30051965, tob: 1305}
]

现在我想创建一个ng-grid,其中将有一列代表每个人的出生日期和时间。由于数据格式不正确。所以,我们想要一个过滤器。

var gridOptions1 = {
        data: 'myData',
        columnDefs: [
            { field:"name", displayName: "NAME"},
            { field:"age", displayName: "AGE"},
            { field:"dob+tob", displayName: "Date & Time"}
        ],
        selectedItems: $scope.selected
    };

请帮忙。 Plnkr

1 个答案:

答案 0 :(得分:1)

我会将您的初始JSON服务器数据与您要推送到ng-grid中的数据分开。

因此,在为grid2设置数据源之前,我会创建您的视图模型:

$scope.grid2Data = [];
for(var i = 0; i < $scope.myData.length; i++) {

  $scope.grid2Data.push({

    name: $scope.myData[i].name,
    age: $scope.myData[i].age,
    fullDate: $scope.myData[i].dob.toString() + $scope.myData[i].tob.toString()
  })
}

然后配置grid2的列,以便使用cellFilter属性:

var gridOptions2 = {
        data: 'grid2Data',
        columnDefs: [
            { field:"name", displayName: "Name"},
            { field:"age", displayName: "Age"},
            { field:"fullDate", displayName: "Date & Time", cellFilter:"formatDate:'ddMMyyyyHHmm':'HH:mm MM/dd'"}],
        multiSelect: false,
        selectedItems: $scope.selected
    };

这是plunker showing the techniqu e的实际效果。

这适用于除一个日期之外的所有日期(位置3处的日期)。该日期似乎没有使用您的过滤器正确格式化。