【问题标题】:Angularjs Multiselect datepicker arrayAngularjs多选日期选择器数组
【发布时间】:2015-08-05 16:29:55
【问题描述】:

我通过在 tr 元素中使用 ng-changeng-repeat 来创建了一个简单的多选而不扩展 ui-bootstrap。我可以选择多个日期并将所有日期推送到表格数组中。但是删除项目的splice() 和清空数组的pop() 根本不起作用。

这里是通过扩展引导程序支持多选的链接plnkr.co/iVSdXt

我的控制器:

angular.module('app', ['gm.datepickerMultiSelect'])
.controller('AppCtrl', function() {
  this.activeDate;
  this.selectedDates = [new Date().setHours(0, 0, 0, 0)];
  this.type = 'individual';

  this.identity = angular.identity;

  this.removeFromSelected = function(dt) {
    this.selectedDates.splice(this.selectedDates.indexOf(dt), 1);
  }
});

【问题讨论】:

  • 从您的代码看来运行良好。
  • 然后显示不起作用的代码。
  • 我很乐意提供帮助,但也许最好在另一个单独的问题中提问。并且更清楚一点:avoid it 是指避免右键单击还是避免左右单击?
  • 顺便说一句,如果它可以帮助您解决问题,请点赞/接受我的回答:)
  • 刚刚创建了一个带有日历的工作演示:plnkr.co/edit/sbHcuZRIfrueMOrrJKIA?p=preview

标签: arrays angularjs datepicker multi-select


【解决方案1】:

查看工作演示:Plunker

首先ng-change requires ng-model

注意,这个指令需要 ngModel 存在。

你的错误来了:

找不到指令“ngChange”所需的控制器“ngModel”!

添加ng-model 喜欢:

<tr ng-repeat="d in frompickers" ng-model="selectedDate" 
    ng-change="fromdatepickers(calDate)">

其次,将控制器修改为:

angular.module('app', [])
  .controller('AppCtrl', function($scope) {
    $scope.frompickers = [];
    $scope.remove = function(index) {
      $scope.frompickers.splice(index, 1);
    }
    $scope.reset = function() {
      while ($scope.frompickers.length > 0) {
        $scope.frompickers.pop();
      }
    };
    $scope.fromdatepickers = function(calDate) {
      var cdate = new Date(calDate);
      $scope.frompickers.push(cdate);
    };
  });

在您的代码中,您在函数$scope.fromdatepickers 中定义$scope.frompickers = [];,它每次都会创建一个新数组。所以数组总是只有一个成员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多