我是 AngularJS 的新手,一直想知道处理以下情况的最佳方法:

1. 我需要显示过去 30 天的数据行。 (默认选项)

我是怎么做的:当页面加载时,Spring Controller 将列表放在模型属性中。

@RequestMapping(value="/show/data", method = RequestMethod.GET) 
    public String getDataPage(ModelMap model) { 
        //cropped for brevity 
        List<Data> dataList = dataService.getData(fromDate, toDate); 
        model.addAttribute("dataList ", dataList ); 
 
        return "data-page"; 
    } 

在 JSP 中,我使用 EL 标记循环遍历列表并以表格形式向用户显示数据

<c:forEach var="currentData" items="${dataList}"> 
    <tr> 
        <td>${currentData.name}</td> 
        <td>${currentData.address}</td> 
        <td>${currentData.email}</td> 
        <td>${currentData.phone}</td> 
    </tr> 
</c:forEach> 
  1. 用户可以选择日期范围,并且根据所选范围(例如今天、昨天、上周、上个月、自定义范围),显示的数据应该会更新。

我是怎么做的:我正在使用 Bootstrap-Daterangepicker ( https://github.com/dangrossman/bootstrap-daterangepicker ) 来显示标记。它为我提供了一个回调函数。

$('#reportrange').daterangepicker(options, callback); 

例如$('#reportrange').daterangepicker(options, function(startDate, endDate){});

如果没有 AngularJS,这将变得一团糟。 我可以调用 jQuery ajax,然后获取一个列表,然后在 jQuery 中处理 DOM 元素。但这很乱。

如何在这种情况下包含 AngularJS 以使我的生活更轻松。 (而且代码更简洁) 请帮忙。我卡住了。

请您参考如下方法:

您必须使用 Angular $http service .为了更好的抽象,你应该使用 $resource service .

var mod = angular.module('my-app', ['ngResource']); 
 
function Controller($scope, $resource) { 
  var User = $resource('http://serveraddress/users?from=:from&to=:to', null, { 
      getAll: {method: 'JSONP', isArray: true} 
    }); 
 
  $scope.changeDate = function(fromDate, toDate) { 
    $scope.users = User.getAll({from: fromDate, to: toDate}); 
  }; 
 
  $scope.users = User.getAll(); 
} 
<html ng-app="my-app"> 
<div ng-controller="Controller"> 
  <input type="text" my-date-picker="changeDate($startDate, $endDate)" /> 
  <table> 
    <tr ng-repeat="user in users"> 
      <td>{{user.name}}</td> 
      <td>{{user.address}}</td> 
    </tr> 
  </table> 
</div> 
</html> 

为了适应 DateSelector,您希望创建一个指令来封装它的要求。最简单的一个是:

mod.directive('myDatePicker', function () { 
    return { 
    restrict: 'A', 
        link: function (scope, element, attr) { 
            $(element).daterangepicker({}, function (startDate, endDate) { 
                scope.$eval(attr.myDatePicker, {$startDate: startDate, $endDate: endDate}); 
            }); 
        } 
    }; 
}); 

无需担心同步问题。由于 $resource 基于 promises , 它会在数据准备好时自动绑定(bind)。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!