使用UI Calendar时,遇到异步读取数据报错问题

原创 2017年01月03日 16:01:26

使用UI Calendar时,遇到异步读取数据报错问题


  • 原始代码(有关代码)

    vm.events = [];
    init();
    function init() {
        ecnuMessageDao.getCurrentMessages(function (res) {
            vm.events = res.data;                
        })
    }
    vm.uiConfig = {
        calendar: {
            height: 450,
            editable: true,
            weekNumbers: true,
            navLinks: true,
            eventLimit: true,
            buttonIcons: false,
            locale: 'zh-cn',
            views: {
                day: {
                    titleFormat: 'YYYY年MM月DD日'
                },
                week: {
                    titleFormat: 'YYYY年MM月'
                },
                month: { // name of view
                    titleFormat: 'YYYY年MM月'
                },
            },
            timeFormat: 'HH:mm',
            header: {
                left: 'prev,next today myCustomButton',
                center: 'title',
                right: 'month,agendaWeek,agendaDay,listMonth'
            },
            dayNames: [
                "星期日",
                "星期一",
                "星期二",
                "星期三",
                "星期四",
                "星期五",
                "星期六"
            ], dayNamesShort: ["日", "一", "二", "三", "四", "五", "六"], monthNames: [
                "一月",
                "二月",
                "三月",
                "四月",
                "五月",
                "六月",
                "七月",
                "八月",
                "九月",
                "十月",
                "十一月",
                "十二月"
            ],
            eventClick: vm.alertOnEventClick,
            eventDrop: vm.alertOnDrop,
            eventResize: vm.alertOnResize,
            eventRender: vm.eventRender
        }
    };
    vm.eventSources = [vm.events];
    
  • 代码执行次序

    • 上述代码的执行次序应该是执行到init后,由于有异步请求,因此会继续往下执行,此时vm.events并没有值。等到代码都执行完,数据返回之后执行vm.events = res.data;来改变vm.events的值。这样逻辑上感觉没错,但是数据并没有加到Calendar中。
  • 分析原因
    • 经过调试,发现在执行完vm.events = res.data;之后,vm.events中的值确实是改变了,但是html的显示却没有改变。那么猜测应该是Calendar中的某个监听没有起作用,或者说vm.events = res.data;这条语句没有触发这个监听。
  • 解决过程
    • 后来查看了官方DemoaddEvent方法,发现它是通过events.push操作来添加新的event。因此猜测数组的push方法能够触发该未知的监听。
  • 最终解决方法
    • vm.events = res.data;改成
      for (var i = 0; i < res.data.length; i++) vm.events.push(res.data[i]);
      最后亲测有效。

Java中中关于Calendar类的几点注意事项

在使用Java的Calendar类会遇到的几个问题,这里整理一下,供参考 1. 在获取月份时,Calendar.MONTH + 1 的原因 Java中的月份遵循了罗马历中的规则:当时一年中的月...
  • LiuXingSiYe
  • LiuXingSiYe
  • 2016年07月01日 09:19
  • 664

使用Toolbar遇到的问题

我们在开发中,对Toolbar已经非常熟悉了,这个东西已经取代了ActionBar了,我们在以往的开发中使用Toolbar的时候,否会遇到一个错误,本人老是犯这个错误,所以写个笔记,记录一下,下面是报...
  • liwei123liwei123
  • liwei123liwei123
  • 2016年08月31日 14:58
  • 622

使用activity中遇到的问题及解决办法

Activity写在前文的话,最近的项目里用到的基本上全是Activity,在使用的时候会出现很多小问题,在这里总结一下。方便以后自己掌握,同时希望也能帮助到需要帮助的人 我们都知道Activity是...
  • Good_Learning_IT
  • Good_Learning_IT
  • 2016年07月12日 21:32
  • 251

matlab学习中遇到的问题整理

编程基础实在是很差,将最近在看matlab程序遇到的问题查资料,并整理如下: 一.Matlab输出输出参数varargout与nargout,varargin与nargin的区别(来自百度文库) 1、...
  • SMF0504
  • SMF0504
  • 2017年08月03日 14:06
  • 351

Android Calendar使用过程中遇到的问题

最近项目里使用到了日历(Calendar),这里模拟一个需求,将遇到的问题进行记录。 需求:根据日历时间进行货品预订,并且只能预订未来一个月内的货品 代码实现 java package com.p...
  • a254830856
  • a254830856
  • 2016年07月05日 18:53
  • 2258

文件上传时候可能遇到的问题

1 .   上传的时候老提示  没有 临时目录 检查   php.ini     中的    upload_tmp_dir  是否打开了   没有则打开并设置好临时文件目录, 如果在Linu...
  • dengfei00100
  • dengfei00100
  • 2016年07月10日 23:41
  • 138

JSP开发中遇到的几个小问题

自从接触JSP以来,就不断的遇到各种各样的问题,不断的查资料,不断的摸索。跟ASP.NET相比,JSP给我的感觉是开发思想相对复杂不少,开发工具的自动化程度太低,而且需要了解很多的网页运行原理。①页面...
  • arui319
  • arui319
  • 2006年05月15日 12:12
  • 2440

一个挺有意思的小问题Html控件和Web控件

问题描述: 在一个Asp.net页面中添加一个TextBox控件,一个Html标签,一个Button控件,一个Label控件。代码如下: Code highlighting produce...
  • aley
  • aley
  • 2015年03月27日 09:24
  • 753

Android学习笔记十二:Calendar(示例、出错代码、参数)

java.util 类 Calendar java.lang.Object java.util.Calendar 所有已实现的接口:Serializable, Cloneable, Compa...
  • wuhenyouyuyouyu
  • wuhenyouyuyouyu
  • 2016年05月16日 15:09
  • 1192

VC++ .NET UI同步(使用Invoke托管方法),异步线程调用UI

花了好几天才学会,之前的代码都是C#的,无法直接使用. 1.首先定义并声明托管 delegate void testUI1(String ^ptr); //定义一个UI托管 delegate ...
  • cp1300
  • cp1300
  • 2015年01月28日 22:04
  • 1312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用UI Calendar时,遇到异步读取数据报错问题
举报原因:
原因补充:

(最多只允许输入30个字)