我从角度开始。我决定在指令中创建自己的简单月历。它基于这个日历:multipleDatePicker。但问题是,根据父母的说法,我无法做到尽可能高的高度。
日历分为 4 个部分。顶部的月份名称,下面的短日期名称,然后是日历日,然后是移动到下一个/上一个月份的控件。
我只是想让白天部分(所以选择日课程)扩大。它可以根据父高度进行扩展。如果调整窗口大小或控件更改月份,则父高度可以更大。
这是模板。天数是 inline-block ,宽度在 css 中按 100% / 7 天计算。但是我不能将它应用于高度,因为根据月份有 5 或 6 行周。
<div class="date-picker">
<div class="picker-action-row">
<div class="picker-month">{{monthName}}</div>
</div>
<div class="picker-days-week-row">
<div ng-repeat="day in daysOfWeek">{{day}}</div>
</div>
<div class="picker-days-row">
<div class="picker-day picker-empty" ng-repeat="x in emptyFirstDays"> </div><!--
--><div class="picker-day" ng-repeat="day in days">{{day ? getDay(day) : ''}}</div><!--
--><div class="picker-day picker-empty" ng-repeat="x in emptyLastDays"> </div>
</div>
<div class="picker-action-row">
<div class="picker-navigate" ng-click="previousMonth()"><i class="fa fa-chevron-left"></i></div><!--
--><div class="picker-navigate" ng-click="currentMonth()"><i class="fa fa-home"></i></div><!--
--><div class="picker-navigate" ng-click="nextMonth()"><i class="fa fa-chevron-right"></i></div>
</div>
</div>
在指令中,我具有像这样更改月份的功能
scope.nextMonth = function() { ... }
scope.previousMonth = function() { ... }
scope.currentMonth = function() { ... }
而且我有一个函数可以像这样根据父母的高度计算完美尺寸(它使用 dom 属性来获取 offsetHeight 值)
scope.getPerfectDayHeight = function () { ... }
当月份更改或调整窗口大小但视图未更新时,我尝试使用 jquery 更改选择器日高度。
$('.picker-day').css('height', scope.getPerfectDayHeight() );
也许它不起作用,因为它不是用 Angular 做到这一点的方法。因此,如果您有任何想法正确地做到这一点。也许我什至不需要 JQuery 来做到这一点?
谢谢