2012-06-29 14 views
5

Come parte dell'implementazione del pulsante sulla barra degli strumenti della barra multifunzione. Richiedo il nome dello schema nel file di script Button java. Quindi sto cercando di usare il seguente comando per ottenere l'oggetto schema.Come ottenere il nome dello schema dall'oggetto schema in Tridion?

$display.getView().getItem().getSchema(); 

Il comando precedente restituirà l'oggetto schema. Ma come ottenere il titolo dello schema dall'oggetto schema. Per favore aiutami in questo. Grazie in anticipo. La risposta anticipata è apprezzata.

risposta

-5

Utilizzando il seguente comando si può accedere il nome dello schema.

$display.getView().getItem().getSchema().getStaticTitle(); 

Grazie Romkes per il vostro aiuto.

Hey Pufflin Non sto dicendo che sia l'unica soluzione. Ma questo comando funziona senza alcun ritardo. Scusa se ferisco i sentimenti di qualcuno.

+1

Funzionerà ancora solo se l'elemento è già caricato in un elenco. Che apparentemente era nei tuoi test, ma è probabile che i tuoi utenti trovino una situazione in cui l'oggetto non è ancora stato caricato. Fai un favore a te stesso e ai tuoi utenti e atteniti al metodo suggerito da Albert: il tuo codice viene eseguito in un'interfaccia utente Web e le informazioni potrebbero dover essere recuperate da un server remoto. –

10

È necessario caricare le informazioni sull'oggetto chiamando .load (true) sull'oggetto dello schema. Perché (ovvio) non tutte le informazioni vengono caricate a causa di motivi di prestazioni.

Poiché la chiamata .load() è asincrona, è necessario utilizzare una funzione di callback per "sapere" quando viene eseguito il caricamento.

È possibile utilizzare il seguente codice per caricare l'oggetto e di leggere le sue proprietà (codice semplificato):

var schemaObject = $display.getView().getItem().getSchema(); 
function loaded() 
{ 
    alert(schemaObject.getTitle()); 
} 
$evt.addEventHandler(schemaObject, "load", loaded); 
schemaObject.load(true); 
+0

Grazie per la risposta. Funziona se messo alert nel metodo loaded(). In caso contrario, restituisce NULL. Sembra che richieda del tempo per caricare. Come evitarlo? Puoi per favore spiegarmi la soluzione? Grazie in anticipo. –

+1

Non lo "eviti". È un processo asincrono. Invece dovresti usare gli eventi (guarda ad esempio $ evt.addEventHandler) per far partire il tuo codice nel momento in cui ne hai bisogno. –

+2

Vorrei verificare se getStaticTitle restituisce qualcosa prima, tuttavia - il titolo è una di quelle proprietà che potrebbero essere effettivamente caricate anche se il resto dell'articolo non lo è (poiché i collegamenti ad altri elementi in genere hanno l'ID e il titolo del target) –

Problemi correlati