所以我有一个日历应用程序,现在用户选择开始/结束日期,然后单击更新日历。这填充了一个日历。但是,我遇到了麻烦,包括范围中的新元素。例如,而不是一遍又一遍地使用相同的功能来计算一些小区的“小区日”,从开始日期,一周数,一周中的一周数等,我想将单元格存储到其范围内让所有其他人都使用它。不知何故,尽管很多尝试,我无法做到这一点。在下面的JSFIDdle中,您将注意到每个日历单元格的右上角显示的月份。但是,如果您更改日期,请在一个月上说,月份更新,但我在单元格中显示的“小区日期”不会更新!

例如,拍摄“2014年7月5日星期六”。更新日期开始于6/1,而最重要的单元格仍然是“2014年7月5日星期六”,即使它的月份日6月7日反映!相关代码处于“Calcell”指令和“事件”指令。在Calcell中,我将Celld设置为NG-Init='Celld= CellDate(Num,Start_DT,$ Index)'。然后在事件中,我只需使用{{celld}}显示。我可以通过在事件中使用celldate(num,start_dt,$ index)来完成它,但我真的不想在任何地方使用一百万次的函数。有没有办法可以在Cell对象中存储小区日期,并在儿童范围内使用它并在数据更改时更新它?最终,我将通过屏幕日期传递给该日期的函数来获取事件数据,然后事件将迭代它们以显示事件数据。

fiddle link

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;
            }
        }
    }); 
.

谢谢!

有帮助吗?

解决方案

我能够通过将CELLD放在事件标记上进行操作。不确定是否有帮助。

<div events ng-attr-celld='{{cellDate(num, start_dt, $index)}}'></div>
.

无需更换它,attr是范围值。

//replace: true,
...
scope: {celld:'@'}
.

fiddle

如果您尚未见过 - Angular UI日历 - 可能会保存你有一段时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top