// some sample data
var data = {
identifier: 'id',
label: 'id',
items: []
};
var data_list = [
{"Heard": true, "Checked": "True", "Genre":"Easy Listening", "Artist":"Bette Midler", "Year":2003, "Album":"Bette Midler Sings the Rosemary Clooney Songbook", "Name":"Hey There", "Length":"03:31", "Track":4, "Composer":"Ross, Jerry 1926-1956 -w Adler, Richard 1921-", "Download Date":"1923/4/9", "Last Played":"04:32:49"},
{"Heard": true, "Checked": "True", "Genre":"Classic Rock", "Artist":"Jimi Hendrix", "Year":1993, "Album":"Are You Experienced", "Name":"Love Or Confusion", "Length":"03:15", "Track":4, "Composer":"Jimi Hendrix", "Download Date":"1947/12/6", "Last Played":"03:47:49"}]
dojo中定义一个data,用作Store的数据源,(可以将整体都放在后台请求的数据中,格式化之后一块返回前台,就不必用js去处理),其中的items部分数据来自后台请求返回的数组data_list 进行格式化,
var len = data_list.length;
var rounds = 1;
for(var i=0; i < rounds * len ; ++i){
data.items.push(dojo.mixin({'id': i+1 }, data_list[i%len]));
}
其中mixin用来填充数据。
dojo源码里,大量使用 dojo.mixin、dojo.extend、dojo.declare 三个方法。作用均为扩展dojo基类。
一、dojo.mixin
dojo.mixin用于扩展一个实例对象,如
var obj = {a:1,b:2}
dojo.mixin(obj,{c:3,d:4})
那么现在的obj为{a:1,b:2,c:3,d:4}
二、dojo.extend
dojo.extend用于扩展一个类对象,在实际应用中我主要用来扩展dojo控件。如给dijit.Dialog扩展一个setTitle方法
dojo.extend(dijit.Dialog,{
setTitle:function(name){
this.set('title',name)
}
})
这样在创建Dialog对象后,就包含的 setTitle 的方法。
三、dojo.declare
dojo.declare在控件里被大量应用,原因是dojo.declare可以声明一个类,而不污染继承的类。可以用面向对象语言里的多重继承理解。比如 我要声明一个对话框类,这个对话框有特殊的样式。
dojo.declare(
"myDialog",
dijit.Dialog,
{
style:...,
setTitle:function(...){...}
}
)
可以比较方便的继承控件,编写自己的控件