无法从带有Angular js选项卡的datepicker中获取选定日期

时间:2015-07-29 10:38:48

标签: javascript angularjs datepicker angular-bootstrap

我在angular bootstrap的tabset元素中使用了datepicker。当我在选项卡中使用datepicker并选择日期时,我无法在控制器中获得所选日期的正确值。

如果我删除标签,那么我可以获得当前选择的日期。 代码是plunker:     http://plnkr.co/edit/dIJRDQUYdrKmChdIt9T2?p=preview

 <form name="form" class="form-horizontal" ng-controller="ctrl">
    <tabset>
      <tab justified="true">
        <tab-heading>
          Main
        </tab-heading>
    <div class="form-group">
      <label class="col-xs-2 control-label" for="etaDate">ETA Date</label>
      <div class="input-group col-xs-6 col-sm-4 col-md-2">
        <input class="form-control" id="etaDate" name="etaDate" type="text" ng-model="eta" datepicker-popup="dd/MM/yyyy" is-open="opened.open" show-weeks="false" />
        <span class="input-group-btn">
              <button class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
            </span>
      </div>
    </div>
     <button ng-click="getdate()">GET DATE</button>
      </tab>
    </tabset>
  </form>

的script.js

angular.module('myApp', ['ui.bootstrap']);
var ctrl = function($scope) {
  $scope.opened = {};

  $scope.open = function($event) {
    $event.preventDefault();
    $event.stopPropagation();
    $scope.opened.open = true;
  };
  $scope.eta = new Date();

  $scope.getdate = function (){
    alert($scope.eta)
  };

};

1 个答案:

答案 0 :(得分:0)

可以使用两个标签找到下面的工作演示: http://embed.plnkr.co/RkLGqy5zZjfCqlCuuNPF/preview

“Tabset”目录在主范围内创建自己的独立范围,具有自己的属性,不会将属性继承到父级。为了解决这个问题,正如@charlietfl所说,我们应该在ng-model中使用点(。)。

为了更好地理解,请查看https://github.com/angular-ui/bootstrap/issues/1553#issuecomment-31980027

更简要说明:https://stackoverflow.com/a/14049482/1252454