Code Monkey home page Code Monkey logo

Comments (8)

csjits avatar csjits commented on September 25, 2024

Der Bug steht in Verbindung mit einem Hack des Dynatree Autors, der rekursives Laden von "lazy" nodes über AJAX ermöglicht:
https://code.google.com/p/dynatree/issues/detail?id=222&q=keypath&colspec=Stars%20ID%20Type%20Status%20Modified%20Priority%20Milestone%20Owner%20Summary (5. Post)
Dafür wird ein bestimmtes Event getriggert, was wiederum einen rekursiven callback auslöst. Klappt auch alles problemlos.

Der Bug tritt nur auf, wenn ein Pfad zum ZWEITEN male geladen wird. Das heisst, startet man von Anfang an die App mit "/TechUnits" als angegebenem Pfad anstatt "/", dann wird auch der Knoten korrekt expandiert. lediglich beim zweiten Laden des Pfads gibt es den Fehler (jquery.dyntree.js:1527).

Ich konnte die Quelle nun soweit zurückverfolgen:
Nachdem ich den Port des Servers über getServer herausgefunden habe, übergebe ich diesen mit einem Event an eine andere Stelle des Programms:

Application.js

$('#view-table').trigger('setPort', 
  {
    port: data.getElementsByTagName('port')[0].textContent,
    serverName: data.getElementsByTagName('path')[0].textContent
  }
);

main.js

$('#view-table').on('setPort', function(e, data) {
  conn.setPort(data.port);
  app.getRoot($('#tree').dynatree('getRoot'), data.serverName);
});

Rufe ich die beiden Befehle direkt ohne das Event auf, dann tritt der Bug nicht auf:

conn.setPort(data.port);
app.getRoot($('#tree').dynatree('getRoot'), data.serverName);

Ich vermute, dass sich die beiden Events irgendwie in die Quere kommen, habe nur leider absolut keine Ahnung wie. Vielleicht habt ihr ja eine Idee?

from henson.

Stasik0 avatar Stasik0 commented on September 25, 2024

Hat es was mit dem caching vom letzten ajax request zu tun. Man kann das caching über .ajaxSetup abschalten.

Am 07.11.2013 um 20:47 schrieb christoph-sachsenhausen [email protected]:

Der Bug steht in Verbindung mit einem Hack des Dynatree Autors, der rekursives Laden von "lazy" nodes über AJAX ermöglicht:
https://code.google.com/p/dynatree/issues/detail?id=222&q=keypath&colspec=Stars%20ID%20Type%20Status%20Modified%20Priority%20Milestone%20Owner%20Summary
Dafür wird ein bestimmtes Event getriggert, was wiederum einen rekursiven callback auslöst. Klappt auch alles problemlos.

Der Bug tritt nur auf, wenn ein Pfad zum ZWEITEN male geladen wird. Das heisst, startet man von Anfang an die App mit "/TechUnits" als angegebenem Pfad anstatt "/", dann wird auch der Knoten korrekt expandiert. lediglich beim zweiten Laden des Pfads gibt es den Fehler (jquery.dyntree.js:1527).

Ich konnte die Quelle nun soweit zurückverfolgen:
Nachdem ich den Port des Servers über getServer herausgefunden habe, übergebe ich diesen mit einem Event an eine andere Stelle des Programms:

Application.js

$('#view-table').trigger('setPort',
{
port: data.getElementsByTagName('port')[0].textContent,
serverName: data.getElementsByTagName('path')[0].textContent
}
);
main.js

$('#view-table').on('setPort', function(e, data) {
conn.setPort(data.port);
app.getRoot($('#tree').dynatree('getRoot'), data.serverName);
});
Rufe ich die beiden Befehle direkt ohne das Event auf, dann tritt der Bug nicht auf:

conn.setPort(data.port);
app.getRoot($('#tree').dynatree('getRoot'), data.serverName);
Ich vermute, dass sich die beiden Events irgendwie in die Quere kommen, habe nur leider absolut keine Ahnung wie. Vielleicht habt ihr ja eine Idee?


Reply to this email directly or view it on GitHub.

from henson.

csjits avatar csjits commented on September 25, 2024

nein, kein unterschied

from henson.

Stasik0 avatar Stasik0 commented on September 25, 2024

Ne, wahrscheinlich nicht ;(

Vermutung 2: kann es sein, dass data zwischenzeitlich sich verändert?

from henson.

csjits avatar csjits commented on September 25, 2024

nein, es ist egal ob ich data benutze oder den port mit "7509" manuell reinschreibe

der einzige unterschied ist wirklich das event, was getriggert wird...

from henson.

Stasik0 avatar Stasik0 commented on September 25, 2024

Kann sein, dass das event über eine kette mehrmals ausgelöst wird?

from henson.

csjits avatar csjits commented on September 25, 2024

ja, das wars:

$('#server-name').change(function() {

zu

$('#server-name').off('change').change(function() {

sonst wird der immer wieder neu getriggert

in wie weit das jetzt aber mit dem anderen event interagiert hat, weiss ich immer noch nicht genau. vermutlich wurde es mehrmals in kurzem abstand getriggert und zwischenzeitlich hat sich der dynatree geändert...

from henson.

Stasik0 avatar Stasik0 commented on September 25, 2024

gibts n commit?

from henson.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.