1

我正在尝试将 AngularUI 的日历包装器集成到我的应用程序中,并且日历初始化工作正常。但是,我看不到如何从这里调用日历方法。这是我的控制器代码:

$scope.events = [];
$scope.calendarOptions = {
    calendar: {
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultView: 'agendaWeek',
        selectable: true,
        selectHelper: true,
        select: function(start, end, allDay) {
            var title = prompt('Event Title:');
            if (title) {
                $scope.$apply(function(){
                    $scope.events.push({
                        title: title,
                        start: start,
                        end: end,
                        allDay: allDay
                    });
                });

            }
            // should call 'unselect' method here
        },
        editable: true
    }
};
$scope.eventSources = [$scope.events];

如何从日历中调用方法?它不在我的控制器范围内,我已经检查了范围对象内的任何地方。

我在 uiCalendar 指令代码中找到了这个:

 scope: {ngModel:'=',config:'='},

据我了解,这意味着日历是在一个孤立的范围内创建的。所以不能在日历上调用任何方法。但是,在演示中我发现了这一行:

 /* Change View */
$scope.changeView = function(view) {
    $scope.myCalendar.fullCalendar('changeView',view);
};

所以demo可以调用日历上的方法而我不能?我也无法复制这个。

任何帮助理解或解决问题将不胜感激。

4

1 回答 1

1

好的,所以在源代码中很明显,但我第一眼看不懂。这是一个相关的片段:

if(attrs.calendar){
    scope.calendar = scope.$parent[attrs.calendar] = elm.html('');
}else{
    scope.calendar = elm.html('');
}

这会将日历绑定到您在 HTML 中编写日历指令时声明的名称下的父范围。例如

<div ui-calendar="options" calendar="my-calendar-name" ng-model="events"></div>

这意味着我可以在我的控制器范围内调用日历的方法。这是一个我什至没有考虑过的功能实现!我们需要这个脚本的一些文档。

于 2013-05-14T00:57:14.100 回答