回调月、周、日标题栏按钮点击?

2024-06-21

当用户单击日/周/月按钮时,我需要运行一些 Javascript 代码来重新加载日历。有没有类似的回调dayButtonClicked()或者其他的东西?

BUG发生:

当我第一次加载日历时。最初的视图看起来不错,我的最初加载日。一旦我加载另一个视图,例如周。每个条目都是重复的并显示两个数据源。如果我再次在日和月之间单击后退和前进,数据就会恢复正常。正在发生的事情是removeEventSource当它每天点击后第一次加载新视图时,不会被调用。你以前见过这种情况吗?

<script type='text/javascript'>

    $(document).ready(function() {
    
        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();
        var loadUrl = "menu_booking.php?ne=1&calsub=1";
        var lastView;
        var fullSource = "../fullcalendar/json-events.php?idc=<?= $sClient ?>&v=long";
        var liteSource = "../fullcalendar/json-events.php?idc=<?= $sClient ?>";
        
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            columnFormat: {
                month: 'ddd',
                week: 'ddd d/M',
                day: 'dddd d/M'
            },          
            defaultView: 'agendaDay',           
            firstDay: 1,            
            //editable: true,
            selectable: true,
            allDaySlot: false,
            firstHour: 7,

                
                        

            viewDisplay: function(view) {
                if (lastView == undefined) { lastView = 'firstRun';  }
                
                if (view.name != lastView ) {
                
                if (view.name == 'agendaWeek') { 
                    $('#calendar').fullCalendar( 'removeEventSource', fullSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', liteSource ); 
                    $('#calendar').fullCalendar( 'addEventSource', fullSource ); 
                }
                if (view.name == 'agendaDay') { 
                    $('#calendar').fullCalendar( 'removeEventSource', fullSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', liteSource ); 
                    $('#calendar').fullCalendar( 'addEventSource', liteSource ); 
                }
                
                if (view.name == 'month') { 
                    $('#calendar').fullCalendar( 'removeEventSource', fullSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', liteSource ); 
                    $('#calendar').fullCalendar( 'addEventSource', fullSource ); 
                }
                lastView = view.name;
                }
            },
            
            timeFormat: { // for event elements
                agendaDay: '',
                agendaWeek: '',
                month: '',
                '': 'h(:mm)t' // default
            },          
                            
        });
        //$('#calendar').limitEvents(2);
    });

</script>

我什至按照您的操作方式复制了您的代码,因为我认为我的代码有问题;即使我改成这样:

        //VIEW CHANGE - ALSO ADDS INITIAL SOURCES PER DAY VIEW
        viewDisplay: function(view) {
                $('#calendar').fullCalendar( 'removeEventSource', fullSource ); 
                $('#calendar').fullCalendar( 'removeEventSource', liteSource ); 
                $('#calendar').fullCalendar( 'addEventSource', fullSource );                }
        },

当我从默认加载的视图移动到另一个视图时,它仍然会双重加载数据。我开始认为这肯定是一个错误FullCalendar。这让我发疯

EDIT 2:我的上帝。我不敢相信它终于起作用了!

我不知道为什么,但我需要交换addEventSource and removeEventSource现在看起来像这样:

        viewDisplay: function(view) {
            if (lastView == undefined) { lastView = 'firstRun';  }
            
            //alert("viewname: "+ view.name + "lastView: " + lastView);
            if (view.name != lastView ) {
                if (view.name == 'agendaWeek') { 
                    $('#calendar').fullCalendar( 'addEventSource', shortSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', longSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', shortSource ); 
                }
                if (view.name == 'agendaDay') { 
                    //alert("in day: add litesource");
                    $('#calendar').fullCalendar( 'addEventSource', longSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', longSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', shortSource ); 
                }
                
                if (view.name == 'month') { 
                    //alert("in month: Delete litesource");
                    $('#calendar').fullCalendar( 'addEventSource', shortSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', longSource ); 
                    $('#calendar').fullCalendar( 'removeEventSource', shortSource ); 
                }
                lastView = view.name;
            }
        },

是的 - 不幸的是,这取决于你如何看待它 - 它可能是一个功能或一个错误!?!重要的一行是

ewDisplay: function(view) {
             if (lastView == undefined) { lastView = 'firstRun';  }
             if (view.name != lastView ){ ...

来自我的另一篇文章!

为什么lastView == undefined?这是因为当日历首次加载时,甚至在屏幕上出现任何内容之前,都会触发此事件!

所以我做了一个var = lastview当事件第一次分配时触发时,将其保留为未定义firstRun它可以是任何东西,但不是任何的实际名称monthView此步骤会跳过第一个事件,并且不会两次添加您的提要!我已将这两件事添加为开发人员的错误..但他们正在考虑它 - 因为它们是有争议的功能..

所以剩下的唯一的事情就是硬编码一个skip方法——这就是为什么这整个lastview是为了.我花了两三天的时间尝试调试这个问题;您需要逐行跟踪您的代码,查看何时添加提要,并尝试以某种方式避免它。

别忘了设置最后一个viewname在活动结束时。

    ...
       lastView = view.name;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回调月、周、日标题栏按钮点击? 的相关文章

随机推荐

  • gitignore 匹配子目录中带有前缀和后缀的文件

    我喜欢只跟踪以 es 开头并以 h 或 m 结尾的文件 所以我尝试了这个 exlude all except es h es m and exlude all except es h es m 但对于子目录中的文件都不起作用 当你忽略一切
  • Javascript 或 jQuery Flot 中的仪表图 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试获得一个看起来像仪表的图表 我已经在其他图表中使用 jQuery Flot 那么是否可以使用 Flot 或纯 Javascrip
  • 无法从自生成线程访问 FacesContext.getCurrentInstance()

    无法在自生成线程中获取 FacesContext getCurrentInstance 需要根据后端进程动态更新组件 通过创建一个线程来监视进程并回调组件更新以及 p poll 来实现相同的效果 但是 似乎 FacesContext get
  • bazel go_embed_data“无法嵌入”

    我将以下 bazel BUILD 配置为 gazelle name gazelle go embed data name static files srcs glob static package main var staticFS go
  • 如何将列表复制到数组

    我有导游名单 List
  • Vue 表单输入与现有值的绑定

    我想将输入与模型绑定 当页面加载时 输入就有一个值 但是当我与模型绑定时 当我使用 null 或空值初始化模型时 它会变空 div div
  • py2exe - 没有系统模块“pywintypes”

    我正在尝试将一个简单的 Python 脚本转换为 Windows 可执行文件 我的 setup py 脚本是 from distutils core import setup import py2exe setup name Simple
  • 主屏幕上 iPhone Web 应用程序上的 Google appengine 身份验证

    我正在使用 Google appengine 开发一个可在浏览器和 iPhone 上使用的 Web 应用程序 我已经为此应用程序购买了域名 这样我就有了一个漂亮的 URL 我用过User API http code google com a
  • Visual Studio 时间跟踪插件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Visual Studio 是否有一个插件可以跟踪项目花费的时间以及正在处理的文件 能够每天生成一份报
  • 替换多个文件中的多个字符串

    我有一个包含正则表达式列表和替换文字字符串的文件 格式如下 OLD REGEXP 1 NEW STRING 1 OLD REGEXP 2 NEW STRING 2 我想替换所有匹配的字符串OLD REGEXP X with NEW STRI
  • ASP.NET Core Api-网关中间件

    我是API网关新手 有一个理解问题 我也尝试将一系列 微 服务放在端点后面 为此 我设置了一个 ASP NET Core 应用程序并添加了包三哺乳动物豹猫 https github com ThreeMammals Ocelot 在文档的帮
  • 使用 HAML 渲染“<%%=”

    我有一个 Backbone js 应用程序托管在 Sinatra 中 并通过 ERB 脚本呈现 主干模板使用下划线模板功能 因此变量在 ERB 中呈现 如下所示 div 额外的 会转义该变量的呈现 并使用单个 呈现它 这是下划线模板库将拾取
  • 在窗口调整大小 jquery 上调整元素宽度

    我正在使用 jq 计算页面加载时的元素宽度并且工作正常 尝试自动调整窗口大小 但有点不起作用 期望的效果 框应在窗口大小调整时自动调整大小 而不是下拉 http jsfiddle net yMcXm 4 http jsfiddle net
  • django 删除模板中的硬编码 URL

    我知道在模板文件中我可以包含此代码 它将返回链接列表 for q in all ul li a href q question text a li ul endfor 现在 django 将搜索名称 detail in the urls p
  • 各种 Unice 上 fesetflushtozero() 的等效项

    HP UX的libc有这个功能fesetflushtozero http h21007 www2 hp com portal download files unprot fp manpages fesetflushtozero 3M htm
  • 找不到与目标运行时之一兼容的框架 .NETCoreApp=v1 的运行时目标

    我正在尝试将 Asp Net Core RC1 项目迁移到 RC2 并一直在关注此文档 http dotnet github io docs core concepts dnx migration html并且也遵循了指示 https do
  • 哈希表中的下/上负载因子

    我要用java编写一个链式哈希集类 我知道负载系数是 M 容量 其中 M 是表中当前元素的数量 容量是表的大小 但是负载因子如何帮助我确定是否应该调整表大小并重新散列 此外 我在任何地方都找不到如何计算下 上负载系数 他们还需要吗 我希望这
  • 如何使用 Entity Framework 4.1 Fluent API 映射 Enum?

    我在 EF 的工作表之间有些迷失了 就像自由世界的其他部分一样 我确实需要在我的 POCO 中使用枚举 像我交谈过的许多人一样 我非常喜欢使用代码映射枚举 只是因为 我只是不太喜欢图片 我的困境是 我在几乎每一篇文章中都得到了相互矛盾的信息
  • 为什么 \K 似乎消耗了基本 R 的 gsub 中的一个字符

    这是一个示例字符串 bcadefgh 我希望我能匹配除了 cad 具有以下模式 wa w K w 如果我想替换所有不是的东西 cad 我可以用gsub 像这样gsub wa w K w bcadefgh perl TRUE 但是这输出 ca
  • 回调月、周、日标题栏按钮点击?

    当用户单击日 周 月按钮时 我需要运行一些 Javascript 代码来重新加载日历 有没有类似的回调dayButtonClicked 或者其他的东西 BUG发生 当我第一次加载日历时 最初的视图看起来不错 我的最初加载日 一旦我加载另一个