Angularjs完整日历不显示事件

时间:2014-12-09 13:40:15

标签: javascript angularjs fullcalendar

我正在使用https://github.com/angular-ui/ui-calendar来使用Angularjs中的FullCalendar。

显示日历并显示无错误;

<div class="calendar" ng-model="eventSources" id="eventCalendar" calendar="calendar" config="uiConfig.calendar" ui-calendar="uiConfig.calendar"></div>

但它不会显示事件,我不确定我是否做得对,但它没有显示错误,我搜索互联网并没有找到解决方案。任何人都可以给我一个暗示,为什么它不起作用?

以下是代码段:

var calApp = angular.module('usercalapp', ['ui.bootstrap','dialogs','ngCookies','ui.calendar']);

calApp.controller('UserCtrl', function ($scope, $http, $rootScope, $timeout,,$dialogs,$cookieStore,$compile,uiCalendarConfig) 
{
    $scope.eventSources = [];
    $scope.calendar = $('#calendar');

    $scope.uiConfig = {
       calendar : {
          height: 450,
           editable: true,
           header: {
            left: 'month basicWeek basicDay',
            center: 'title',
            right: 'today prev, next'
            },
        dayClick: $scope.alertEventOnClick,
        eventDrop: $scope.alertOnDrop,
        eventResize: $scope.alertOnSize
    }
};

$scope.cal_func = function()
{
    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    $scope.eventSources = [
    {
        title: 'All Day Test Event',
        start: new Date(y, m, 1)
    },
    {
        title: 'Long Test Event',
        start: new Date(y, m, d - 5),
        end: new Date(y, m, d - 2)
    },
    {
        title: 'Test Birthday Party',
        start: new Date(y, m, d + 1, 19, 0),
        end: new Date(y, m, d + 1, 22, 30),
        allDay: false
    }];

    $scope.calendar.fullCalendar('refetchEvents');
};

$scope.showColorPicker = function(index)
{
    $cookieStore.showuserid = index;
    dlg = $dialogs.create('/dialogs/pickColor.html','pickColorCtrl',{},{key:false ,back:'static'});

    dlg.result.then(function()      
    {       
        $scope.cal_func();
    });
};

....

所以我希望用户选择一种颜色,然后在日历中显示3个事件,但没有任何反应......

3 个答案:

答案 0 :(得分:7)

在此eventSources,您已直接输入了活动。

您应该做的是提供存储事件的阵列列表。 像这样的东西: $scope.eventSources = [$scope.myEvents, $scope.someOtherArray, $scope.otherEvents];

并在$scope.myEvents中,您可以举办活动。

$scope.myEvents = [
  {
    title: 'All Day Test Event',
    start: new Date(y, m, 1)
  },
  {
    title: 'Long Test Event',
    start: new Date(y, m, d - 5),
    end: new Date(y, m, d - 2)
  },
  {
    title: 'Test Birthday Party',
    start: new Date(y, m, d + 1, 19, 0),
    end: new Date(y, m, d + 1, 22, 30),
    allDay: false
  }
];

$scope.someOtherArray, $scope.otherEvents可以是事件的其他来源。

就颜色而言,您可以通过events objectevent source object

自定义颜色
$scope.someOtherArray = [];
$scope.weeklyEvents = {
    color: '#656565',
    textColor: 'white',
    events: []
};
$scope.otherEvents = {
    color: '#B2B2B2',
    textColor: 'black',
    events: []
};

您可以修改代码以使用上述两种方法之一(访问这些链接)。

答案 1 :(得分:1)

我的成就是什么。

而不是这个。

$scope.eventSources = [$scope.myEvents, $scope.someOtherArray, $scope.otherEvents];

尝试这个

$scope.eventSources.push($scope.myEvents);

答案 2 :(得分:0)

我用过

$scope.callCalendar = function (){
... ...
};

并在html文件中:

 <div ui-calendar="uiConfig.calendar" class="span8 calendar" ng-model="eventSources"></div>

事件没有出现在日历中;但我发现$scope.events中的console.log($scope.events)值正确。