dojo 方法重载:以enhancedgrid定制description为例

来源:互联网 发布:淘宝otc药品货到付款 编辑:程序博客网 时间:2024/06/10 20:10

以下是某年某月某日某群的聊天记录:


grid 的分页,还是独立做一个分页
【传说】JOY PB(529058939) 18:24:29
 
enhancedGrid的分页
【传说】JOY PB(529058939) 18:25:11
 
左下角的描述信息,也就是第几页第几项的信息,怎么修改比较好呢
【话唠】RIAStudio(228456440) 18:26:29
 
显示css 还是什么
【传说】JOY PB(529058939) 18:26:50
 
等下,我截个图
【话唠】RIAStudio(228456440) 18:26:52
 
css 的话,直接加载一个自己的 css 文件
【传说】JOY PB(529058939) 18:27:11
 
不是css,是里面的模板内容
【传说】JOY PB(529058939) 18:28:02
 
【话唠】RIAStudio(228456440) 18:28:17
 
没用过
【传说】JOY PB(529058939) 18:28:24
 
dojox\grid\enhanced\nls\zh\Pagination.js这个文件下的
【话唠】RIAStudio(228456440) 18:28:44
 
这个是一个字符串模板
【传说】JOY PB(529058939) 18:28:48
 
你要告诉我,你没用过dijit么。。。
【话唠】RIAStudio(228456440) 18:28:53
 
有4个参数
【传说】JOY PB(529058939) 18:28:59
 
你全是自己写的。。。
【话唠】RIAStudio(228456440) 18:29:05
 
这是它自己的,不是通用的
【传说】JOY PB(529058939) 18:29:32
 
能修改没
【话唠】RIAStudio(228456440) 18:29:52
 
这4个参数分表代表的是什么,可以搜索 descTemplate 找一下在哪里匹配的
【话唠】RIAStudio(228456440) 18:30:00
 
肯定可以改
【话唠】RIAStudio(228456440) 18:30:22
 
不过要通过重载来修改,最好不要直接改原控件
【传说】JOY PB(529058939) 18:30:45
 
【传说】JOY PB(529058939) 18:31:07
 
enhancedGrid的pagination插件里面有nls
【话唠】RIAStudio(228456440) 18:31:23
 
nls 是多国语言,跟这个没关系
【传说】JOY PB(529058939) 18:31:31
 
是啊,我也不想修改他的源文件
【话唠】RIAStudio(228456440) 18:32:03
 
等下,帮你找一下
【传说】JOY PB(529058939) 18:32:07
 
【传说】JOY PB(529058939) 18:32:24
 
这是它里面的调用
【话唠】RIAStudio(228456440) 18:36:38
 
dojox\grid\enhanced\nls\zh\Pagination.js这个文件的399行

_updateDescription: function(){
// summary:
// Update size information.
var s = this.plugin.forcePageStoreLayer,
maxSize = this.plugin._maxSize,
nls = this.plugin._nls,
getItemTitle = function(){
return maxSize <= 0 || maxSize == 1 ? nls[5] : nls[4];
};
if(this.description && this.descriptionDiv){
this.descriptionDiv.innerHTML = maxSize > 0 ? string.substitute(nls[0], [getItemTitle(), maxSize, s.startIdx + 1, s.endIdx + 1]) : "0 " + getItemTitle();
}
},
重载这个方法
【话唠】RIAStudio(228456440) 18:36:53
 
his.descriptionDiv.innerHTML = maxSize > 0 ? string.substitute(nls[0], [getItemTitle(), maxSize, s.startIdx + 1, s.endIdx + 1]) : "0 " + getItemTitle();
【话唠】RIAStudio(228456440) 18:37:04
 
this.descriptionDiv.innerHTML = maxSize > 0 ? string.substitute(nls[0], [getItemTitle(), maxSize, s.startIdx + 1, s.endIdx + 1]) : "0 " + getItemTitle();
【话唠】RIAStudio(228456440) 18:37:08
 
主要是这个
【话唠】RIAStudio(228456440) 18:37:17
 
string.substitute(nls[0],
【话唠】RIAStudio(228456440) 18:37:37
 
[getItemTitle(), maxSize, s.startIdx + 1, s.endIdx + 1]
这就是那4个参数
【传说】JOY PB(529058939) 18:39:53
 
_updateDescription这个貌似文档里面没有
【话唠】RIAStudio(228456440) 18:40:07
 
这是私有方法
【话唠】RIAStudio(228456440) 18:40:15
 
说了,不要看文档,直接看代码
【传说】JOY PB(529058939) 18:40:38
 
嗯,以后看代码
【话唠】RIAStudio(228456440) 18:40:39
 
用 extend 重载一下就可以了
【传说】JOY PB(529058939) 18:41:42
 
不会extend
【传说】JOY PB(529058939) 18:41:57
 
我刚学会create class
【话唠】RIAStudio(228456440) 18:42:00
 
【传说】JOY PB(529058939) 18:42:06
 
【话唠】RIAStudio(228456440) 18:42:30
 
等你学会了,就能体会到 dojo 真的是最好的 js 框架
【传说】JOY PB(529058939) 18:43:28
 
再教点吧,怎么extend
【话唠】RIAStudio(228456440) 18:44:54
 
require(["dojox\grid\enhanced\nls\zh\Pagination"], function(Pagination){
  Pagination.extend({
_updateDescription: function(){
// summary:
// Update size information.
var s = this.plugin.forcePageStoreLayer,
maxSize = this.plugin._maxSize,
nls = this.plugin._nls,
getItemTitle = function(){
return maxSize <= 0 || maxSize == 1 ? nls[5] : nls[4];
};
if(this.description && this.descriptionDiv){
this.descriptionDiv.innerHTML = maxSize > 0 ? string.substitute(nls[0], [getItemTitle(), maxSize, s.startIdx + 1, s.endIdx + 1]) : "0 " + getItemTitle();
}
},
  });
});

0 0
原创粉丝点击