Autor | Zpráva | ||
---|---|---|---|
Hallo Profil * |
#1 · Zasláno: 29. 2. 2012, 16:46:33
Ahoj, snažím se o pseudogrid, u rowSelect metody mi nějak (nebo spíš někam) utíká scope .. předaná property je undefined .. mrkněte na to někdo prosím...
var KtplDS = new DataStore(); KtplDS.setUrl('{link Akoncerts:TemplatesSource}'); function KtplGrid(){ var unique = Math.round((new Date()).getTime()); var datastore = null; var storedData = false; var tempData = false; var target_element = false; var rowSelectFunction = false; var updateData = function(overwrite) { datastore.update(function(JSONres){ storedData = JSONres; parseData(overwrite); return ; }); }; var parseData = function(overwrite) { // hook pro iteraci nad DS if(overwrite) { prepareSkeleton(); } return ; }; var prepareSkeleton = function() { var buffer = []; buffer.push('<div class="st-tr-wrapper"><div class="st-tr-header">Správa šablon koncertů</div>'); buffer.push('<div class="st-tr-left">Položka<ul>'); if(storedData.count) { // fill data from datastore tempData = storedData.data; // test row select function if(typeof rowSelectFunction == 'function') { var rowSelect = true; } else { var rowSelect = false; } for (var iks in tempData) { buffer.push('<li class="st-tr-item"'); if(rowSelect) { buffer.push('onclick="ktplGrid.rowSelect(',parseInt(tempData[iks]['idconcerts']),')"'); } buffer.push('>'); if(parseInt(tempData[iks]['active'])) { buffer.push('<strike>'); } buffer.push(tempData[iks]['internal_name']); if(parseInt(tempData[iks]['active'])) { buffer.push('</strike>'); } buffer.push('</li>'); }; } else { buffer.push('<li>no data</li>'); } buffer.push('</ul></div>'); buffer.push('<div class="st-tr-dataentry" id="'); buffer.push(unique,'"></div></div>'); $('#'+target_element).html(buffer.join('')); }; return { setStore : function(DStore) { if(typeof DStore == 'object') { datastore = DStore; return true; } else { return false; } }, registerRowSelect: function(FnK) { if(typeof FnK == 'function') { rowSelectFunction = FnK; return true; } else { return false; } }, rowSelect: function(rowid) { // test row select function if(typeof rowSelectFunction == 'function') { // test grid state and row id if(tempData && typeof tempData[rowid] != 'undefined') { rowSelectFunction.call(tempData[rowid],unique); return true; } else { return false; } } else { return false; } }, setTargetHook : function(TargetElement) { target_element = TargetElement; }, render : function(overwrite) { updateData(overwrite); } } } ktplGrid = new KtplGrid(); ktplGrid.setStore(KtplDS); ktplGrid.setTargetHook('snippet--content'); ktplGrid.registerRowSelect(function(row,uq){ var buffer = []; buffer.push('Šablona koncertu "',row['internal_name'],'"<br/>') buffer.push('<form id="st-art-form" method="POST">'); buffer.push('<input type="hidden" name="idartists" value="',row['idkoncerts'],'"/>'); buffer.push('<fieldset id="basic">','<legend>Nastavení</legend>'); buffer.push('<label for="name">Interní název </label>'); buffer.push('<input name="name" value="',row['internal_name'],'"/>'); buffer.push('<label for="translate_name">Šablona je aktivní</label>'); buffer.push('<input type="checkbox" name="active"'); if(parseInt(row['active'])) { buffer.push('checked="checked"'); } else buffer.push('"/>'); buffer.push('</fieldset>'); buffer.push('<input name="submit" type="submit" value="Odeslat"></form>'); $('#'+uq).html(buffer.join('')); }); ktplGrid.render(true); |
||
_es Profil |
#2 · Zasláno: 29. 2. 2012, 17:36:53
Hallo:
Skús ten problém nejako vyseparovať, v hentom akože OOP chaose sa ťažko vyznať. Aká metóda? Kde je definovaná? Kde je volaná? Aká „property“? |
||
Hallo Profil * |
#3 · Zasláno: 1. 3. 2012, 11:17:41 · Upravil/a: Hallo
metoda je rowSelect, problém je už vyřešen, zapoměl jsem předat u call context - takže arg1 byl brán jako arg0 ..
Jinak souhlasím, že je to OOP humus, nemám JS vývojáře a přece jen můj skill s JS je roven nule .. |
||
Časová prodleva: 12 let
|
0