3

AngularJS を使用して、選択した日付が次の営業日と等しいかどうかを確認しようとしています。選択した日付が次の営業日と等しくない場合、ng-show angularjs ディレクティブを使用して、twitter ブートストラップのアラート警告のような警告が表示されます。

これが現在のFiddleです。

現在、次の営業日は getNextBusinessDay() $scope 関数によって返されます。比較は、比較に基づいて true/false を返す必要がある ng-changed="comparisonResult()" によってトリガーされますが、機能していません。

ここに私のhtmlコード:

<body ng-app="angularjs-starter" ng-controller="MainCtrl">
<div class="container">
  <section id="datepicker">
    <div class="bs-docs-example">
      <form class="form-horizontal well">
        <div class="control-group input-append">
          <label for="inputDatepicker" class="label" style="margin-right:6px;">
            Selected Date</label>
          <input id="inputDatepicker" class="input-small" type="text" 
            ng-model="selectedDate" ng-changed="comparisonResult()" 
            data-date-format="dd/mm/yyyy" bs-datepicker>
          <button type="button" class="btn" data-toggle="datepicker">
          <i class="icon-calendar"></i></button>
        </div>
      </form>
    </div>
  </section>
</div>
</body>

ここに私のjsコードがあります:

var app = angular.module('angularjs-starter', ['$strap.directives']);

app.controller('MainCtrl', function($scope, $window, $location) {

  // Datepicker directive
  $scope.selectedDate = null;

    $scope.getNextBusinessDay = function() {
        return $scope.getDeliveryDateObj(1);
    }

    $scope.getDeliveryDateObj = function(businessDaysLeftForDelivery){
        var now = new Date();
        var dayOfTheWeek = now.getDay();
        var calendarDays = businessDaysLeftForDelivery;
        var deliveryDay = dayOfTheWeek + businessDaysLeftForDelivery;
        if (deliveryDay >= 6) {
            businessDaysLeftForDelivery -= 6 - dayOfTheWeek; // deduct this-week days
            calendarDays += 2; // count this coming weekend
            deliveryWeeks = Math.floor(businessDaysLeftForDelivery / 5); // how many whole weeks?
            calendarDays += deliveryWeeks * 2; // two days per weekend per week
        }
        now.setTime(now.getTime() + calendarDays * 24 * 60 * 60 * 1000);

        now.setUTCHours(0);
        now.setUTCMinutes(0);
        now.setUTCSeconds(0);
        now.setUTCMilliseconds(0);

        return now;
    }

    $scope.getNextBusinessDay();

    $scope.comparisonResult = function() {
        if($scope.selectedDate == $scope.getNextBusinessDay()) {
            return false;
        } else {
            return true;
        }
    };

});

任意のヘルプや提案をいただければ幸いです。前もって感謝します。:)

4

2 に答える 2