body.js revision 79fac3c43e396f54a5fb368ac33ff7c21df23397
'<tbody class="{classes}">{content}</tbody>',
'<tr id="{clientId}" class="{rowClasses}">' +
'{content}' +
'</tr>',
'<td headers="{headers}" class="{classes}" {attributes}>' +
'<div class="{linerClass}">' +
'{content}' +
'</div>' +
'</td>',
initializer: function (config) {
this._eventHandles = [];
},
destructor: function () {
},
render: function () {
// Copy taken so hidden and nodeFormatter columns
// can be removed for template assembly and population
// Needed for mutation
this._createRowTemplate(columns);
}
if (existing) {
if (replace) {
}
} else {
}
this.bindUI();
return this;
},
_createRowTemplate: function (columns) {
var html = '',
cellTemplate = this.CELL_TEMPLATE,
--i;
} else {
tokenValues = {
};
if (col.nodeFormatter) {
// Defer all node decoration to the formatter
}
}
}
});
},
_createDataHTML: function (columns) {
rowTemplate = this._rowTemplate,
html = '';
formatterData = {
classnames: '',
//attributes: {}
};
// Formatters can either return a value
// or update the value property of the data obj passed
}
if (isObject(attributes)) {
for (attr in attributes) {
}
}
}
}
}
}
});
return fromTemplate(this.TBODY_TEMPLATE, {
});
},
formatters = [],
i, len;
// Only iterate the ModelList again if there are nodeFormatters
if (columns[i].nodeFormatter) {
formatters.push(i);
}
}
if (formatters.length) {
var formatterData = {
},
if (row) {
if (cell) {
if (keep === false) {
// Remove from the Node cache to reduce
// memory footprint. This also purges events,
// which you shouldn't be scoping to a cell
// anyway. You've been warned. Incidentally,
// you should always return false. Just sayin.
}
}
}
}
});
}
},
bindUI: function () {
this._eventHandles.push(
['*:change', '*:destroy'],
this._afterDataChange, this));
},
_afterColumnChange: function (e) {
// TODO
},
_afterDataChange: function (e) {
// TODO
}
});