⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 store.js

📁 初学者
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.collections.Store");dojo.require("dojo.lang.common");dojo.collections.Store = function (jsonArray) {	var data = [];	var items = {};	this.keyField = "Id";	this.get = function () {		return data;	};	this.getByKey = function (key) {		return items[key];	};	this.getByIndex = function (idx) {		return data[idx];	};	this.getIndexOf = function (key) {		for (var i = 0; i < data.length; i++) {			if (data[i].key == key) {				return i;			}		}		return -1;	};	this.getData = function () {		var arr = [];		for (var i = 0; i < data.length; i++) {			arr.push(data[i].src);		}		return arr;	};	this.getDataByKey = function (key) {		if (items[key] != null) {			return items[key].src;		}		return null;	};	this.getIndexOfData = function (obj) {		for (var i = 0; i < data.length; i++) {			if (data[i].src == obj) {				return i;			}		}		return -1;	};	this.getDataByIndex = function (idx) {		if (data[idx]) {			return data[idx].src;		}		return null;	};	this.update = function (obj, fieldPath, val, bDontFire) {		var parts = fieldPath.split("."), i = 0, o = obj, field;		if (parts.length > 1) {			field = parts.pop();			do {				if (parts[i].indexOf("()") > -1) {					var temp = parts[i++].split("()")[0];					if (!o[temp]) {						dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object.");					} else {						o = o[temp]();					}				} else {					o = o[parts[i++]];				}			} while (i < parts.length && o != null);		} else {			field = parts[0];		}		obj[field] = val;		if (!bDontFire) {			this.onUpdateField(obj, fieldPath, val);		}	};	this.forEach = function (fn) {		if (Array.forEach) {			Array.forEach(data, fn, this);		} else {			for (var i = 0; i < data.length; i++) {				fn.call(this, data[i]);			}		}	};	this.forEachData = function (fn) {		if (Array.forEach) {			Array.forEach(this.getData(), fn, this);		} else {			var a = this.getData();			for (var i = 0; i < a.length; i++) {				fn.call(this, a[i]);			}		}	};	this.setData = function (arr, bDontFire) {		data = [];		for (var i = 0; i < arr.length; i++) {			var o = {key:arr[i][this.keyField], src:arr[i]};			data.push(o);			items[o.key] = o;		}		if (!bDontFire) {			this.onSetData();		}	};	this.clearData = function (bDontFire) {		data = [];		items = {};		if (!bDontFire) {			this.onClearData();		}	};	this.addData = function (obj, key, bDontFire) {		var k = key || obj[this.keyField];		if (items[k] != null) {			var o = items[k];			o.src = obj;		} else {			var o = {key:k, src:obj};			data.push(o);			items[o.key] = o;		}		if (!bDontFire) {			this.onAddData(o);		}	};	this.addDataRange = function (arr, bDontFire) {		var objects = [];		for (var i = 0; i < arr.length; i++) {			var k = arr[i][this.keyField];			if (items[k] != null) {				var o = items[k];				o.src = arr[i];			} else {				var o = {key:k, src:arr[i]};				data.push(o);				items[k] = o;			}			objects.push(o);		}		if (!bDontFire) {			this.onAddDataRange(objects);		}	};	this.addDataByIndex = function (obj, idx, key, bDontFire) {		var k = key || obj[this.keyField];		if (items[k] != null) {			var i = this.getIndexOf(k);			var o = data.splice(i, 1);			o.src = obj;		} else {			var o = {key:k, src:obj};			items[k] = o;		}		data.splice(idx, 0, o);		if (!bDontFire) {			this.onAddData(o);		}	};	this.addDataRangeByIndex = function (arr, idx, bDontFire) {		var objects = [];		for (var i = 0; i < arr.length; i++) {			var k = arr[i][this.keyField];			if (items[k] != null) {				var j = this.getIndexOf(k);				var o = data.splice(j, 1);				o.src = arr[i];			} else {				var o = {key:k, src:arr[i]};				items[k] = o;			}			objects.push(o);		}		data.splice(idx, 0, objects);		if (!bDontFire) {			this.onAddDataRange(objects);		}	};	this.removeData = function (obj, bDontFire) {		var idx = -1;		var o = null;		for (var i = 0; i < data.length; i++) {			if (data[i].src == obj) {				idx = i;				o = data[i];				break;			}		}		if (!bDontFire) {			this.onRemoveData(o);		}		if (idx > -1) {			data.splice(idx, 1);			delete items[o.key];		}	};	this.removeDataRange = function (idx, range, bDontFire) {		var ret = data.splice(idx, range);		for (var i = 0; i < ret.length; i++) {			delete items[ret[i].key];		}		if (!bDontFire) {			this.onRemoveDataRange(ret);		}		return ret;	};	this.removeDataByKey = function (key, bDontFire) {		this.removeData(this.getDataByKey(key), bDontFire);	};	this.removeDataByIndex = function (idx, bDontFire) {		this.removeData(this.getDataByIndex(idx), bDontFire);	};	if (jsonArray && jsonArray.length && jsonArray[0]) {		this.setData(jsonArray, true);	}};dojo.extend(dojo.collections.Store, {getField:function (obj, field) {	var parts = field.split("."), i = 0, o = obj;	do {		if (parts[i].indexOf("()") > -1) {			var temp = parts[i++].split("()")[0];			if (!o[temp]) {				dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object.");			} else {				o = o[temp]();			}		} else {			o = o[parts[i++]];		}	} while (i < parts.length && o != null);	if (i < parts.length) {		dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + field + "' is not a property of the passed object.");	}	return o;}, getFromHtml:function (meta, body, fnMod) {	var rows = body.rows;	var ctor = function (row) {		var obj = {};		for (var i = 0; i < meta.length; i++) {			var o = obj;			var data = row.cells[i].innerHTML;			var p = meta[i].getField();			if (p.indexOf(".") > -1) {				p = p.split(".");				while (p.length > 1) {					var pr = p.shift();					o[pr] = {};					o = o[pr];				}				p = p[0];			}			var type = meta[i].getType();			if (type == String) {				o[p] = data;			} else {				if (data) {					o[p] = new type(data);				} else {					o[p] = new type();				}			}		}		return obj;	};	var arr = [];	for (var i = 0; i < rows.length; i++) {		var o = ctor(rows[i]);		if (fnMod) {			fnMod(o, rows[i]);		}		arr.push(o);	}	return arr;}, onSetData:function () {}, onClearData:function () {}, onAddData:function (obj) {}, onAddDataRange:function (arr) {}, onRemoveData:function (obj) {}, onRemoveDataRange:function (arr) {}, onUpdateField:function (obj, field, val) {}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -