所以我有一个日历应用程序,现在用户选择开始/结束日期并单击更新日历。这会填充一个日历。但是,我在范围中包含新元素时遇到了麻烦。例如,我不想一次又一次地使用相同的函数从开始日期、周数、星期几等计算某个单元格的“单元格日期”,我想将单元格日期一次存储到其范围内并让其他人使用它。尽管进行了多次尝试,但不知何故我无法做到这一点。在下面的 JSFiddle 中,您会注意到每个日历单元格的右上角显示月份中的日期。但是,如果您更改日期,比如上个月,当月的天数会更新,但我在单元格中显示的“单元格日期”不会更新!
例如,以“2014 年 7 月 5 日星期六”为例。将日期更新为从 6 月 1 日开始,最右边的单元格仍然是“2014 年 7 月 5 日星期六”,尽管它的日期是 6 月 7 日!相关代码在“calcell”指令和“events”指令中。在 calcell 中,我将 celld 设置为 ng-init='celld=cellDate(num, start_dt, $index)'。然后在事件中我只是使用 {{celld}} 显示。我可以通过在事件中使用 cellDate(num, start_dt, $index) 来让它工作,但我真的不想在任何地方都使用相同的函数一百万次。有没有办法可以将单元格日期存储在单元格对象中,并在子范围内使用它并在数据更改时更新?最终,我会将单元格日期传递给函数以获取该日期的事件数据,然后事件将遍历它们以显示事件数据。
app.directive("events", function($compile, DateService) {
return {
restrict: "A",
replace: true,
scope: true,
template:
"<div>{{celld}}</div>",
link: function(scope, element, attrs) {
scope.DateService = DateService;
}
}
});
//calendar cell
app.directive("calcell", function($compile, DateService) {
return {
restrict: "A",
replace: true,
scope: true,
template:
"<td ng-init='celld=cellDate(num, start_dt, $index)' id='{{\"td\" + DateService.getDateInt(cellDate(num, start_dt, $index))}}' \
realclass='{{getScopeClass(cellDate(num, start_dt, $index))}}'>\
<div>\
<a class='CellDay'>{{DateService.getMonthDay(cellDate(num, start_dt, $index))}}</a>\
</div>\
<br/>\
<br/>\
<br/>\
<br/>\
<div events></div>\
</div>\
</td>",
link: function(scope, element, attrs) {
scope.DateService = DateService;
}
}
});
谢谢!