dojox.dtl.tag.logic.ForNode.render
dojo.require("dojox.dtl.tag.logic");
defined in dojox/dtl/tag/logic.js
Usage
function (context, buffer) (view source)
var i, j, k; var dirty = false; var assign = this.assign; for(k = 0; k < assign.length; k++){ if(typeof context[assign[k]] != "undefined"){ dirty = true; context.push(); break; } } var items = this.loop.resolve(context) || []; for(i = items.length; i < this.pool.length; i++){ this.pool[i].unrender(context, buffer); } if(this.reversed){ items = items.slice(0).reverse(); } var isObject = dojo.isObject(items) && !dojo.isArrayLike(items); var arred = []; if(isObject){ for(var key in items){ arred.push(items[key]); } }else{ arred = items; } var forloop = context.forloop = { parentloop: context.forloop || {} }; var j = 0; for(i = 0; i < arred.length; i++){ var item = arred[i]; forloop.counter0 = j; forloop.counter = j + 1; forloop.revcounter0 = arred.length - j - 1; forloop.revcounter = arred.length - j; forloop.first = !j; forloop.last = (j == arred.length - 1); if(assign.length > 1 && dojo.isArrayLike(item)){ if(!dirty){ dirty = true; context.push(); } var zipped = {}; for(k = 0; k < item.length && k < assign.length; k++){ zipped[assign[k]] = item[k]; } context.update(zipped); }else{ context[assign[0]] = item; } if(j + 1 > this.pool.length){ this.pool.push(this.nodelist.clone(buffer)); } buffer = this.pool[j].render(context, buffer, this); ++j; } delete context.forloop; for(k = 0; k < assign.length; k++){ delete context[assign[k]]; } if(dirty){ context.pop(); } return buffer;
parameter | type | description |
---|---|---|
context | ||
buffer |