Javascript 以编程方式打开角度材质中的md datepicker

Javascript 以编程方式打开角度材质中的md datepicker,javascript,angularjs,angular-material,Javascript,Angularjs,Angular Material,我试图在单击单个元素时从控制器打开MD日期选择器,但它不工作,我使用的是>1.0.4的最新版本 我曾尝试$注入$mdDatePicker,但它说找不到模块 MyController.$inject = [ '$mdDatePicker' ]; 我也翻阅了上一篇文档,但找不到与此相关的任何内容我设法通过扩展指令将此新增功能破解: .directive('mdDatepickerAutoopen', function ($timeout) { return { restrict: 'A

我试图在单击单个元素时从控制器打开MD日期选择器,但它不工作,我使用的是>1.0.4的最新版本

我曾尝试$注入$mdDatePicker,但它说找不到模块

MyController.$inject = [ '$mdDatePicker' ];

我也翻阅了上一篇文档,但找不到与此相关的任何内容

我设法通过扩展指令将此新增功能破解:

.directive('mdDatepickerAutoopen', function ($timeout) {
  return {
    restrict: 'A',
    require: 'mdDatepicker',
    link: function (scope, element, attributes, DatePickerCtrl) {
      element.find('input').on('click', function (e) {
        $timeout(DatePickerCtrl.openCalendarPane.bind(DatePickerCtrl, e));
      });
    }
  };
})

关于未来的兼容性,我会小心处理,因为它取决于内部实现细节,而不是任何公共API。话虽如此,这可能是一个尽可能温和的攻击。

我通过一个扩展指令成功地攻击了这个新增功能:

.directive('mdDatepickerAutoopen', function ($timeout) {
  return {
    restrict: 'A',
    require: 'mdDatepicker',
    link: function (scope, element, attributes, DatePickerCtrl) {
      element.find('input').on('click', function (e) {
        $timeout(DatePickerCtrl.openCalendarPane.bind(DatePickerCtrl, e));
      });
    }
  };
})

关于未来的兼容性,我会小心处理,因为它取决于内部实现细节,而不是任何公共API。话虽如此,这可能是一种尽可能温和的黑客行为。

如果您只需要对话框本身,而不需要日期字段,那么这里有另一种黑客行为

将日期选择器添加到指令模板,但将其隐藏:

<md-datepicker id="datepicker"
               ng-model="selectedDate"
               ng-change="dateChanged()"
               style="position: absolute; visibility: hidden;">
</md-datepicker>

如果您只需要对话框本身,而不需要日期字段,那么这里有另一种黑客方法

将日期选择器添加到指令模板,但将其隐藏:

<md-datepicker id="datepicker"
               ng-model="selectedDate"
               ng-change="dateChanged()"
               style="position: absolute; visibility: hidden;">
</md-datepicker>