【问题标题】:How to disable a json response dates array angularjs datepicker example如何禁用 json 响应日期数组 angularjs datepicker 示例
【发布时间】:2017-10-02 12:35:27
【问题描述】:

我想从日期数组(从 json 响应中检索)开始创建一个 popupDatePicker,但在互联网上寻找它我找不到任何尊重我的问题的简单示例。在我的代码中它不起作用...

这是我的 example.js:

angular.module('ui.bootstrap.demo', ['ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('DatepickerDemoCtrl', function ($scope) {
    $scope.myDisabledDates =  ['2017-09-22T09:13:00.000Z','2017-09-23T09:13:00.000Z']
  $scope.options = {
    dateDisabled: disabled,
    startingDay: 1
  };
  $scope.formats = ['yyyy-MM-ddTHH:mm:ssZ', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];
  $scope.format = $scope.formats[0];  
 /*  $scope.open1 = function() {
    $scope.popup1.opened = true;
  };
  $scope.popup1 = {
    opened: false
  };*/
  function disabled(data) {
    var date = data.date.toISOString().slice(0, 10), 
      mode = data.mode;

    return mode === 'day' && $scope.myDisabledDates.indexOf(date) > -1;
  }
});

还有index.html:

<!doctype html>
<html ng-app="ui.bootstrap.demo">
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script>
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
    <script src="example.js"></script>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>

<div ng-controller="DatepickerDemoCtrl">
    <pre>Selected date is: <em>{{dt | date:'fullDate' }}</em></pre>

    <div style="display:inline-block; min-height:290px;">
      <div uib-datepicker ng-model="dt"  class="well well-sm" datepicker-options="options"></div>  
    </div>
</div>
  </body>
</html>

【问题讨论】:

标签: angularjs datepicker angular-ui-bootstrap


【解决方案1】:

您当前代码的问题是您正在评估一个 10 个字符的字符串与一个 24 个字符的字符串。要解决此问题,请将 disabled() 的返回值更改为:

return mode === 'day' && $scope.myDisabledDates.some(x => x.slice(0, 10) === date);

或者在不支持箭头功能(IE)的浏览器中:

return mode === 'day' && $scope.myDisabledDates.some(function(x) {
  return x.slice(0, 10) === date;
});

【讨论】:

  • @SteVizzo - 什么不起作用? 9/22 和 9/23 被禁用。你确定你看的是 9 月而不是 10 月?
  • 我发现了错误...我认为您使用的是 chrome,因为 ie11 无法正常工作....doesn0t 出现日历
  • @SteVizzo - 你是说日历根本没有出现吗?您是否在控制台中遇到错误?
  • 是的,我发现了错误,但我不明白为什么: SCRIPT1002: Errore di sintassi example.js (21,61) SCRIPT5022: [$injector:modulerr] 无法实例化模块 ui.bootstrap.demo由于:错误:[$injector:nomod] 模块“ui.bootstrap.demo”不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。 errors.angularjs.org/1.6.1/$injector/nomod?p0=ui.bootstrap.demo 匿名函数 (ajax.googleapis.com/ajax/libs/angularjs/1.6.1/…)
猜你喜欢
  • 2022-09-23
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 2020-11-23
  • 2019-07-19
相关资源
最近更新 更多