我有一个星期几的下拉选项。我想要发生的是当我更改下拉列表时运行$scope.disabled()
方法。从而更改date.getDay() === 2
日期中的静态数字。
您可以看到我想要做的$scope.disabled()
函数的评论。
答案 0 :(得分:1)
在您的select元素中,您正在使用ngOptions,因此您可以使用表达式的 select as 部分,使用{{将每个选项的值设置为id 1}}。所以现在,每次更改选择时,selectedDay的值都会更新,并启动摘要。这意味着你不必看任何东西,你的禁用功能可以简化如下:
ng-options="day.id as day.name for day in daysOfWeek"
我添加了一个检查,如果用户没有选择一天,则将day的值设置为0,但您也可以使用以下命令初始化select的值:
$scope.disabled = function(date, mode) {
var day = angular.isUndefined($scope.selectedDay) ? 0 : $scope.selectedDay;
if (mode === 'day' && date.getDay() === $scope.selectedDay) {
return true;
}
return;
};
现在所有这些都有效,但是有一个问题:datepicker只在渲染时运行禁用的函数并调用其内部的refreshView函数。我可以想到以编程方式触发datepicker刷新的最简单方法是更改其ng-model值。为此,我添加了一个函数:
$scope.selectedDay = 0;
通过在select元素的change事件上调用triggerDate,我们使用当前选择的日期重置datepicker的值(所以我们根本不更改值),这足以强制刷新指令。所以,最终选择看起来像:
$scope.triggerDate = function(date) {
$scope.dt = new Date(date);
}