2011-12-13 26 views
17

Ho un problema con il menu contestuale di JsTree, come posso rimuovere gli elementi predefiniti dal menu di scelta rapida come Crea, Elimina, Rinomina? Voglio fornire elementi personali, ma gli elementi predefiniti sono ancora nel menu contestuale.jstree rimuovi elementi predefiniti dal menu di scelta rapida

+0

Qual è il problema con la modifica di elementi all'interno di 'items'to nuovi valori? [collegamento] (http://www.jstree.com/documentation/contextmenu) padre uno è 'chiave' e' etichetta' sarà un'etichetta per il menu di scelta rapida – Pradeep

risposta

15

Ho avuto questo problema un paio di giorni fa ma non ho ancora deciso se questo è un bug o una funzionalità. Potrebbe essere correlato all'ordine in cui vengono caricati i plugin.

Che cosa ha funzionato per me è stato restituzione degli oggetti da una funzione:

"contextmenu" : { 
    "items" : function ($node) { 
     return { 
      "IsimVer" : { 
       "label" : "İsim Değiştir", 
       "action" : function (obj) { this.rename(obj); } 
      }, 
      "Ekle" : { 
       "label" : "Ekle", 
       "action" : function (obj) { this.create(obj); } 
      }, 
      "Sil" : { 
       "label" : "Sil", 
       "action" : function (obj) { this.remove(obj); } 
      } 
     }; 
    } 
} 

Dopo qualche ricerca sembra che l'default behaviour is for your menu items to extend the defaults, quindi questa è una caratteristica. Sfortunatamente la documentazione al momento manca dei dettagli su questo punto.

+2

sembra identico ma ho capito che devi fare questo:}, \t \t \t \t creare: false, \t \t \t \t rename: false, \t \t \t \t rimuovere: false, \t \t \t \t ccp: true articoli oggetto. – LostMohican

+0

Grazie mi hai reso la vita più facile. – Ashwin

6

Basta impostare il valore su falso nell'oggetto oggetto. Ad esempio, per disabilitare modificare (copia taglio,, incolla) del menu provate questo:

contextmenu : { 
    items : { 
     "ccp" : false 
    } 
} 
3


Impostare ccp, creare, rinominare, rimuovere a falso in questo modo:

plugins : ["themes","json_data","ui","crrm", "hotkeys", "types", "contextmenu"], 
contextmenu : { 
    items : { 
     "IsimVer" : { 
      "label" : "IsimVer", 
      "action" : function (obj) { alert("IsimVer"); } 
     }, 
     "Ekle" : { 
      "label" : "Ekle", 
      "action" : function (obj) { alert("Ekle"); } 
     }, 
     "Sil" : { 
      "label" : "Sil", 
      "action" : function (obj) { alert("tiga"); } 
     }, 
     "ccp" : false, 
     "create" : false, 
     "rename" : false, 
     "remove" : false 
    } 
} 
12

Se si desidera modificare le etichette di articoli esistenti o rimuoverne alcuni, una soluzione semplice come quella di seguito funzionerà

"contextmenu": { 
    "items": function(node) { 
      var defaultItems = $.jstree.defaults.contextmenu.items(); 
      defaultItems.create.label = "Ekle"; 
      delete defaultItems.ccp; 
      return defaultItems; 
     } 
    } 

Questo imposterà l'etichetta "Crea" come "Ekle" e rimuoverà copia taglia incolla dagli elementi predefiniti.

+0

Questa è la migliore risposta che ho visto. –

+0

questo è stato l'unico che ha funzionato per me usando 3.x del jstree, grazie – Gurnard

+0

Lo stesso qui! Grazie! –

Problemi correlati