1

我使用 angularJS 材质对话框来创建弹出窗口,我想在其中输入某些任务完成的时间。我想使用 bootstrap-datepicker 并且我必须为我的输入分配功能,

angular.element(".timepicker").timepicker({
    showInputs: false
});` 

但问题是当这个函数被命中时,那个元素不存在。

这是我的控制器功能:

$scope.showCompleteConfirm = function (ev) {
        //Timepicker
        angular.element(".timepicker").timepicker({
            showInputs: false
        });
        $mdDialog.show({
            controller: UserDetailController,
            templateUrl: 'app/components/templates/CustomTimeDialog.html',
            parent: angular.element(document.body),
            targetEvent: ev,
            clickOutsideToClose: true,
            fullscreen: false // Only for -xs, -sm breakpoints.
        })
        .then(function (answer) {
            //success
        }, function () {
            //fail
        });
    };

我能做的及其工作是在我的 HTML 页面中创建标签并从那里分配它,因为当调用此模板时,我的输入将存在,但我想知道是否有办法使它与我的功能仅在控制器中。

4

1 回答 1

2

我不完全确定,但我认为$mdDialog有一个onComplete可以使用的生命周期钩子。show()它在完成运行后被触发。

$mdDialog.show({
            controller: UserDetailController,
            templateUrl: 'app/components/templates/CustomTimeDialog.html',
            parent: angular.element(document.body),
            targetEvent: ev,
            clickOutsideToClose: true,
            fullscreen: false // Only for -xs, -sm breakpoints.
            onComplete: function (){
                     angular.element(".timepicker").timepicker({
                     showInputs: false
              });
            }
            })
于 2017-01-29T23:31:33.647 回答