Javascript 使用$scope变量设置日期选择器min/maxDates

Javascript 使用$scope变量设置日期选择器min/maxDates,javascript,angularjs,datepicker,Javascript,Angularjs,Datepicker,我面临的问题是,我已经创建了一个日期选择器,我想根据从json收集的日期设置它的最小日期和最大日期 问题是,在初始化日期选择器时,$scope变量为空 $scope.dates = []; $scope.stats = {}; $scope.latestDay; $scope.startDay; $controller('rightsController', { $scope : $scope }); init(); $("#datepick").datepicker({

我面临的问题是,我已经创建了一个日期选择器,我想根据从json收集的日期设置它的最小日期和最大日期

问题是,在初始化日期选择器时,$scope变量为空

$scope.dates = [];
$scope.stats = {};
$scope.latestDay;
$scope.startDay;

$controller('rightsController', {
    $scope : $scope
});

init();

$("#datepick").datepicker({
    changeMonth: true,
    changeYear: true,
    buttonImageOnly: true,
    dateFormat: 'dd/mm/yy',
    minDate: ''+$scope.startDay,
    maxDate: ''+$scope.latestDay
});

function init() {
    fetchHourlyStats0();
}

$scope.fetchComparativeStats = function() {
    fetchHourlyStats0();
}

function fetchHourlyStats0() {
    var promiseStats = statsFactory.getHourlyStats();
    $q.all([ promiseStats ]).then(function(values) {
       $scope.stats = values[0].data;
       i = 0;
       for ( var k in $scope.stats) {
           $scope.dates[i] = k;
           var v = $scope.stats[k];
           i++;
       }
       var length = $scope.dates.length-1;
       $scope.latestDay = $scope.dates[0];
       $scope.startDay = $scope.dates[length];
    })
}

在创建数据访问对象并填充变量后,是否可以创建datepicker?

首先,我建议您停止混合使用Jquery和Angular。看看这条线: 我认为您将很难将jquery设置的值放入选择器中

但是,这不是你现在的问题

function fetchHourlyStats0() {
    var promiseStats = statsFactory.getHourlyStats();
    $q.all([ promiseStats ]).then(function(values) {
       // code removed
       $scope.latestDay = $scope.dates[0];
       $scope.startDay = $scope.dates[length];

       $("#datepick").datepicker({
            changeMonth: true,
            changeYear: true,
            buttonImageOnly: true,
            dateFormat: 'dd/mm/yy',
            minDate: ''+$scope.startDay,
            maxDate: ''+$scope.latestDay
        });

    });
}
您只需在承诺延迟创建日期选择器的
.then()
中运行jquery代码即可

而且,
promisests
看起来像一个单一的承诺。您不需要将
$q
注入控制器。直接使用您的第一个承诺:

statsFactory.getHourlyStats().then(function(values){
    //
});


欢迎来到这里,约翰!我已经编辑了你的问题,删除了“你好,我是新来的”和“提前谢谢”。谢谢你的回复!我会研究你提供的链接。至于代码,我以前试过,如果我把代码放在那里,datepicker没有可用的min/maxDate。它不允许我选择任何一天。
var promiseStats = statsFactory.getHourlyStats();
promiseStats.then(function(values){
   //
});