2013-02-06 9 views

risposta

3

Come indicato nello documentation for accessing data, si accede ai dati elemento con il metodo eles.data(). Nel tuo caso sarebbe che si è definito l'id come il nome del nodo, allora è solo una questione di chiamare

console.log('clicked ' + this.data('id')); 
+0

Grazie, questo si traduce in : Unchaught TypeError: Impossibile leggere la proprietà 'id' di undefined –

+0

In realtà, funziona se lo faccio (leggera modifica di h ttps: //github.com/cytoscape/cytoscape.js/blob/master/debug/init.js): https://gist.github.com/dtenenba/4733384 –

6

Il .ID() funziona su elementi, ma non si dispone di un elemento nella tua gestore di eventi. Sei legato al core senza alcun selettore di elementi delegati, quindi sei legato al core stesso, ovvero il riferimento a this punti a cy.

Questo è probabilmente quello che voleva dire:

cy.on('click', 'node', function(evt){ 
     console.log('clicked ' + this.id()); 
}); 
+0

Il tuo codice funziona, mi chiedo solo perché l'esempio il codice dal sito Web cytoscape.js non causa alcun errore di identificazione. cy.on ('tap', 'node', function (evt) { var node = evt.target; console.log ('tapped' + node.id()); }); –

+0

'evt.target' è necessariamente un nodo a causa del selettore dei delegati. – maxkfranz

5

Io lo uso per 2.x:

cy.on('tap', 'node', function (evt) { 
     console.log(evt.cyTarget.id()) 
    }); 

O per 3.x:

cy.on('tap', 'node', function (evt) { 
     console.log(evt.target.id()) 
    });