需要JS + Angular AMD的完整日历

时间:2016-10-24 10:50:58

标签: jquery angularjs requirejs fullcalendar

以前,我只使用带有fullcalendar的角度js,那时所有带有data-calendar-view属性的菜单操作菜单都正常工作。

'<ul class="actions actions-alt" id="fc-actions">' +
        '<li class="dropdown" dropdown>' +
        '<a href="" dropdown-toggle><i class="zmdi zmdi-more-vert"></i></a>' +
        '<ul class="dropdown-menu dropdown-menu-right">' +
        '<li class="active">' +
        '<a data-calendar-view="month" href="">Month View</a>' +
        '</li>' +
        '<li>' +
        '<a data-calendar-view="basicWeek" href="">Basic Week View</a>' +
        '</li>' +
        '<li>' +
        '<a data-calendar-view="agendaWeek" href="">Full Week View</a>' +
        '</li>' +
        '<li>' +
        '<a data-calendar-view="basicDay" href="">Basic Day View</a>' +
        '</li>' +
        '<li>' +
        '<a data-calendar-view="agendaDay" href="">Full Day View</a>' +
        '</li>' +
        '</ul>' +
        '</div>' +
        '</li>';

我正在打电话

  $('#calendar').fullCalendar('changeView', attrs.calendarView);

这个函数在指令中。

但之后我修改了我的项目并添加了必需的js和角度AMD,以便在需要时加载js。

所有其他代码保持不变,日历在UI中加载,但函数没有执行,甚至没有抛出任何错误。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

提供的代码不足以为您提供全面的答案,但是对于您的代码以这种方式失败,只有几个选项

  1. 您的指令未呈现,因此根本不会调用$('#calendar').fullCalendar('changeView', attrs.calendarView);
  2. 检查指令是否使用开发人员工具断点或穷人调试执行 - console.log如果它是应该调用该函数的指令模板,那么请确保在link中进行指令的方法,因为它被称为后期渲染

    1. 您的指令已呈现,但在$('#calendar').fullCalendar('changeView', attrs.calendarView);出现在DOM之前调用了#calendar
    2. 在执行fullCalendar之前检查$(&#39;#calendar&#39;)是否存在 $('#calendar')将返回没有任何元素的jQuery对象,并且fullCalendar将被调用而不会抛出错误,如果它正在进行DOM赛车问题:

      $timeout(function(){
          $('#calendar').fullCalendar('changeView', attrs.calendarView);
      });
      

      如果在$timeout中执行此片段会安排下次$digest来电

      ,那么应该会有所帮助