星期一
首先,解决load()
的async问题,看这里.
接下来是,解决怎么一次加载完数据。因为我把页面分成了3个tab。每个tab都是单独的一个form。
思路是把这个tab container放到一个form panel里边去。但是,还是不行。于是只好一个个地assign。
星期二
处理修改密码的form
首先,验证旧密码是否正确。用到了Ext的自定义Vtype。
Ext.apply(Ext.form.field.VTypes, {
validateOldPwd: function(val) {
return (val === oldPwd);
},
validateOldPwdText: "密码错误"
});
其实上面这样做是不正确的,因为密码不可能明文地发送给前台。所以,前台需要做的是,把用户填写的旧密码发给后台,让后台去校验,然后他会返回true和false。
接着,验证新密码是否一致。
Ext.apply(Ext.form.field.VTypes, {
password: function(val, field) {
var pwd = field.up("form").down("#" + field.initialPassField);
return (val === pwd);
},
passwordField: “两次输入的密码不一致"
});
最后,点击保存按钮。
因为前后台要交接,所以我需要用到数据库来测试。但是期间数据库无法建表,搞了好久,原来是后台的某些文件报错,但是我们忽略了他们。把那些报错的文件删掉后,就可以正常建表了。
星期三
还是修改密码的form。
我一开始是想:在用户输入完旧密码并blur之后,用Ajax立即传给后台,这样UX会更好。手段是我写了一个自定义的Ext VType。但是每次都会触发多次请求,看so上一个跟我一样问题。答案里边说了:Ext的VType不适用于remote validation,而适用于local validation。所以最后在submit的时候才验证。
另外,Ext.Ajax.request
可以设置async: false
, 可以传递参数params
, callback function返回的是一个response object
, 他有一个property是responseText
。因为后台返回给我的是对象(准确来说是JSON object), 所以我直接用reponseObject.reponseText
来访问,但是undefined。不知道为什么不行!对象的属性不是这样访问吗?原来,问题在于返回的是一个JSON object, 我们需要使用JSON.parse()
把JSON对象解析为common JavaScript object。
Ext.Ajax.request({
async: false,
params: {
name: "Drake"
},
success: function(res) {
var resText = JSON.parse(res.responseText);
}
});
星期四
和后台继续交接,虽然进度很慢。看着好像很容易的样子,做起来真的不是那么简单。
星期五
快乐的一天有木有!今晚是2014迎新晚会,上台表演完后,大家一起去吃宵夜,唱K,最high是,可以和小伙伴们一起跳舞。哈哈哈——跟着音乐一起舞动的感觉,真好。小伙伴们好热情。
星期六
睡到12点了。下午继续和后台交接。好像差不多完成的样子- -
星期天
突然想学一下爬虫,goggle后,终于知道爬虫的英文是crawler, spider等等。一开始打算用node.js,已经之前学过一下下。后来发现tutorial不是很多,而且不是很好用。于是就打算学一下python,因为有听说不错的framework,也就是scrapy,去codecadamy上学了一点python,然后晚上解决了一个bug。
还有新任务是把电话插件新加多一个会议电话功能。
打算
打算把blog再重整一下,好久没写过了。