监听checkbox状态;选中就是完成事件;
而且完成和没有完成的事件分开放置;
要分析每条事件的状态
- extend()合并对象;$.merge() 函数用于合并两个数组内容到第一个数组。这里我们使用extend()
- 升级提醒时间,替换js自带date,使用jquery时间插件,精确到秒
npm i jquery-datetimepicker --save
- 为了异步加载删除按钮事件,使用 jQuery.Deferred() 方法。deferred对象就是jQuery的回调函数解决方案。也就是可以使其他程序在后台继续执行,不用冻结。原生的就是全部冻结,程序暂时暂停
// 更新Task
function update_task(index,data){
if (index === undefined || !task_list[index]) return;
task_list[index] = $.extend({},task_list[index],data);
// console.log(store.get('task_list'));
refresh_task_list();
}
点击后,会重新刷新网页,所以选取不了按钮。所以我们可以在渲染页面的时候,让其来控制check
是不是很巧妙呢?
- jQuery规定,deferred对象有三种执行状态—-未完成,已完成和已失败。如果执行状态是”已完成”(resolved),deferred对象立刻调用done()方法指定的回调函数;如果执行状态是”已失败”,调用fail()方法指定的回调函数;如果执行状态是”未完成”,则继续等待,或者调用progress()方法指定的回调函数(jQuery1.7版本添加)。
- dtd.resolve()的意思是,将dtd对象的执行状态从”未完成”改为”已完成”,从而触发done()方法。
- http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
- jQuery提供了deferred.promise()方法。它的作用是,在原来的deferred对象上返回另一个deferred对象,后者只开放与改变执行状态无关的方法(比如done()方法和fail()方法),屏蔽与改变执行状态有关的方法(比如resolve()方法和reject()方法),从而使得执行状态不能被改变。
resolved方法用在等待用户点击的时候,因为我们不知道用户什么时候点击,所以需要异步