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

📄 lazyloadjsistore.js

📁 这是一个ajax的例子大家好好的看看就是一个鱼眼的效果
💻 JS
字号:
if(!dojo._hasResource["dojox.data.demos.stores.LazyLoadJSIStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.data.demos.stores.LazyLoadJSIStore"] = true;dojo.provide("dojox.data.demos.stores.LazyLoadJSIStore");dojo.require("dojo.data.ItemFileReadStore");dojo.declare("dojox.data.demos.stores.LazyLoadJSIStore", dojo.data.ItemFileReadStore, {	constructor: function(/* object */ keywordParameters){		// LazyLoadJSIStore extends ItemFileReadStore to implement an 		// example of lazy-loading/faulting in items on-demand.		// Note this is certianly not a perfect implementation, it is 		// an example.	},		isItemLoaded: function(/*object*/ item) {		//	summary:		//		Overload of the isItemLoaded function to look for items of type 'stub', which indicate		//		the data hasn't been loaded in yet.		//		//	item:		//		The item to examine.				//For this store, if it has the value of stub for its type attribute, 		//then the item basn't been fully loaded yet.  It's just a placeholder.		if(this.getValue(item, "type") === "stub"){			return false;		}		return true;	},			loadItem: function(keywordArgs){		//	summary:		//		Overload of the loadItem function to fault in items.  This assumes the data for an item is laid out		//		in a RESTful sort of pattern name0/name1/data.json and so on and uses that to load the data.		//		It will also detect stub items in the newly loaded item and insert the stubs into the ItemFileReadStore		//		list so they can also be loaded in on-demand.		//		//	item:		//		The item to examine.		var item = keywordArgs.item;		this._assertIsItem(item);		//Build the path to the data.json for this item		//The path consists of where its parent was loaded from 		//plus the item name.		var itemName = this.getValue(item, "name");		var parent   = this.getValue(item, "parent");		var dataUrl  = "";		if (parent){			dataUrl += (parent + "/");		}		//For this store, all child input data is loaded from a url that ends with data.json		dataUrl += itemName + "/data.json";		//Need a reference to the store to call back to its structures.		var self = this;		// Callback for handling a successful load.		var gotData = function(data){			//Now we need to modify the existing item a bit to take it out of stub state			//Since we extend the store and have knowledge of the internal			//structure, this can be done here.  Now, is we extended			//a write store, we could call the write APIs to do this too			//But for a simple demo the diretc modification in the store function			//is sufficient.			//Clear off the stub indicators.			delete item.type;			delete item.parent;			//Set up the loaded values in the format ItemFileReadStore uses for attributes.			for (i in data) {				if (dojo.isArray(data[i])) {					item[i] = data[i];				}else{					item[i] = [data[i]];				}			}			//Reset the item in the reference.			self._arrayOfAllItems[item[self._itemNumPropName]] = item;			//Scan the new values in the item for extra stub items we need to 			//add to the items array of the store so they can be lazy-loaded later...			var attributes = self.getAttributes(item);			for(i in attributes){				var values = self.getValues(item, attributes[i]);				for (var j = 0; j < values.length; j++) {					var value = values[j];										if(typeof value === "object"){						if(value["stub"] ){							//We have a stub reference here, we need to create the stub item							var stub = {								type: ["stub"],								name: [value["stub"]],	//								parent: [itemName]		//The child stub item is parented by this item name...							};							if (parent) {								//Add in any parents to your parent so URL construstruction is accurate.								stub.parent[0] = parent + "/" + stub.parent[0]; 							}							//Finalize the addition of the new stub item into the ItemFileReadStore list.							self._arrayOfAllItems.push(stub);							stub[self._storeRefPropName] = self;							stub[self._itemNumPropName] = (self._arrayOfAllItems.length - 1); //Last one pushed in should be the item							values[j] = stub; //Set the stub item back in its place and replace the stub notation.						}					}				}			}			//Done processing!  Call the onItem, if any.			if(keywordArgs.onItem){				var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global;				keywordArgs.onItem.call(scope, item);			}		};		//Callback for any errors that occur during load.		var gotError = function(error){			//Call the onComplete, if any			if(keywordArgs.onError){				var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global;				keywordArgs.onError.call(scope, error);			}		};		//Fire the get and pass the proper callbacks to the deferred.		var xhrArgs = {			url: dataUrl,			handleAs: "json-comment-optional"		};		var d = dojo.xhrGet(xhrArgs);		d.addCallback(gotData);		d.addErrback(gotError);	}});}

⌨️ 快捷键说明

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