将 cordova 日期选择器与 ng-cordova 一起使用,承诺"then"不会得到应有的执行。在安卓上


module.controller('MyCtrl', function($scope, $cordovaDatePicker) {
    $scope.showDatePicker=function(){
        var options = {date: new Date(), mode: 'date'};
        //var options = {date: new Date(), mode: 'time'}; for time
        $cordovaDatePicker.show(options).then(function(date){
            alert(date);
        });
    };
});

选择日期后不久就会出现警报,但是当我第二次调用showDatePicker时,它会出现,并显示在第一次尝试中选择的日期。

第一次单击时的示例,我选择了 2014 年 12 月 18 日,并在本机日期选取器窗口中选择了确定。它关闭而不显示警报。第二次单击时,它首先显示日期为"2014 年 12 月 18 日"的警报,然后显示日期选择器。

您是否尝试使用香草回调而不是使用承诺?喜欢这个

$cordovaDatePicker.show(options, function(date){
    alert(date);
});

更新看了一下来源。看起来你的代码应该是这样的

$q.when($cordovaDatePicker.show(options)).then(function(date){
    alert(date);
});

显示方法返回承诺。

我能够通过以正确的顺序加载库来解决此问题。

以前

 <script src="cordova.js"></script>`
`<!-- cordova script (this will be a 404 during development) -->
 <script src="js/ng-cordova.js"></script>
 <script src="cordova.js"></script>`

`<!-- cordova script (this will be a 404 during development) -->
 <script src="js/ng-cordova.js"></script>
 <script src="cordova.js"></script>`

在加载 ng-cordova.js 之前,我错误地多余地包含了<script src="cordova.js"></script>,删除了那条额外的行,一切正常。由于所有文件都在那里加载,所以我没有收到任何有意义的错误。对代码进行彻底的逐行验证可以帮助修复它。

最新更新