带有角度指令的可点击bootstrap-datepicker图标

时间:2013-08-02 08:24:06

标签: twitter-bootstrap angularjs directive datepicker

我正在使用angularjs,我想在点击日历图标后显示我的bootstrap-datepicker。
现在就是这样:

<div class="input-append date datepicker">
    <input type="text" b-datepicker ng-model="date"/> 
    <span class="add-on" ><i class="icon-calendar"></i></span>
</div>


其中b-datepicker是自定义指令。单击文本字段显示datepicker,但图标单击不起作用。
这是来源:http://jsfiddle.net/cPVDn/

我的目标是这样:
http://jsfiddle.net/6QnMB/

我感谢任何帮助

更新
这是解决方案
http://jsfiddle.net/cPVDn/53/

3 个答案:

答案 0 :(得分:1)

从AngularStrap中查看可以解决问题的好插件:link

JS

.config(function($datepickerProvider) {
  angular.extend($datepickerProvider.defaults, {
    dateFormat: 'dd/MM/yyyy',
    startWeek: 1
  });
})

HTML

<input type="text"
    class="form-control"
    ng-model="selectedDateAsNumber" 
    data-date-format="yyyy-MM-dd"
    data-date-type="number" 
    data-min-date="02/10/86"
    data-max-date="today"
    data-autoclose="1" 
    name="date2"
    bs-datepicker>

参见演示 Plunker


这是他们的main page

答案 1 :(得分:1)

我将解决方案作为单独的答案发布。

要使图标点击工作而不是:

directive('bDatepicker', function () {
return {
    restrict: 'A',
    link: function (scope, el, attr) {
       el.datepicker();
     }
  };
})

可以使用类似的东西:

directive('bDatepicker', function () {
return {
    restrict: 'A',
    link: function (scope, el, attr) {
        el.datepicker({});
        var component = el.siblings('[data-toggle="datepicker"]');
        if (component.length) {
            component.on('click', function () {
                el.trigger('focus');
            });
        }
    }
  };
})

以下是完整的解决方案片段: http://jsfiddle.net/cPVDn/53/

答案 2 :(得分:0)

bootstrap documentation的示例中,他们有点像这样:

<div class="input-append date datepicker">
  <input type="text" is-open="opened" datepicker-popup ng-model="date"/> 
  <span class="add-on" ng-click="openAction($e)" ><i class="icon-calendar"></i></span>
</div>

然后在控制器中:

  $scope.openAction = function ($event) {

    $event.preventDefault();
    $event.stopPropagation();

    $scope.opened = !$scope.opened;   
}