2

eonasdan datetimepickerを使用していますが、Angular コントローラーからデータ関数にアクセスできません。

次のコードは、「TypeError: 未定義のプロパティ 'setValue' を読み取れません」を生成します。

var d = new Date();
d.setHours(d.getHours() - 8);
m = moment(d);
$("#datetimepicker").data("DateTimePicker").setValue(m);

onChange イベントは次のコードでトリガーされるため、セレクターに問題はありません。

    $("#datetimepicker").on("dp.change", function (e) {
        console.log(e.date._d););
    });

私が発見したように、bootstrap-datetimepicker.js は DateTimePicker データを定義し、setValue 関数を実装しています。

 if (!$this.data('DateTimePicker')) {
                // create a private copy of the defaults object
                options = $.extend(true, {}, $.fn.datetimepicker.defaults, options);
                $this.data('DateTimePicker', dateTimePicker($this, options));
            }

setValue = function (targetMoment) 

私は何を間違っていますか?

4

1 に答える 1

0

問題は、$("#datetimepicker").data("DateTimePicker")外側の DOM を呼び出したことです。

Ng-Model を datetimepicker にバインドするために、スコープを分離したディレクティブを実装することで解決しました。

    .directive('timepicker', [
  function () {
      var link;
      link = function (scope, element, attr, ngModel) {
          element = $(element);
          element.datetimepicker({
              locale: 'sv',
              inline: true,
              sideBySide: true,
              stepping: 30,
              defaultDate: scope.date
          });
          element.on('dp.change', function (event) {
              scope.$apply(function () {                      
              scope.date = event.date._d;;
              });
          });
      };

      return {
          restrict: 'A',
          scope: {
              date: '=ngModel'
          },
          link: link        
      };
  }
    ])

K.Toress が説明するように、ngmodel を使用して datetimepicker でデフォルトの日付を設定する方法は? .

于 2016-09-29T10:08:21.360 に答える