2012-06-29 6 views
5

ボタンをリボンツールバーに実装する際に使用します。私はボタンのJavaスクリプトファイルにスキーマ名が必要です。だから私はスキーマオブジェクトを取得するために、次のコマンドを使用しようとしています。Tridionのスキーマオブジェクトからスキーマ名を取得するには?

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

上記のコマンドは、スキーマオブジェクトを返します。しかし、スキーマ・オブジェクトからスキーマ・タイトルを取得する方法。これで私を助けてください。前もって感謝します。早期の対応は高く評価されます。

答えて

-5

ありがとうございました。

こんにちはパフリン私はそれが唯一の解決策ではないと言います。しかし、このコマンドは遅滞なく動作しています。申し訳ありませんが、私はいずれかの感情を傷つける場合。

+1

これはアイテムがすでにリストに読み込まれている場合にのみ機能します。あなたのテストで明らかになったものの、ユーザーが項目がまだロードされていない状況を見つける可能性があります。あなたとあなたのユーザーはAlbertの提案した方法に賛成してください。コードはWeb UIで実行され、情報はリモートサーバーから取得する必要があります。 –

10

スキーマオブジェクトで.load(true)を呼び出すことによってアイテム情報をロードする必要があります。パフォーマンス上の理由から(すべての情報が読み込まれるわけではないので)

.load()呼び出しが非同期であるため、読み込みが完了するとコールバック関数を使用して '知る'必要があります。

あなたはアイテムをロードするために、それがプロパティ(コード簡体字)です読み取るために、次のコードを使用することができます:1は、スキーマ名にアクセスすることができ、次のコマンドを使用して

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

ご回答いただきありがとうございます。 loaded()メソッドで警告を出すと動作しています。そうでなければNULLを返します。読み込むには時間がかかるようです。それを避ける方法は?解決策を教えていただけますか?前もって感謝します。 –

+1

あなたはそれを "避け"ません。これは非同期プロセスです。代わりに、イベントを使用する必要があります(例えば、$ evt.addEventHandlerを見てください)。 –

+2

私は、getStaticTitleが最初に何かを返すかどうかチェックします。タイトルは、他のアイテムへのリンクが通常IDとターゲットのタイトルを持っているので、アイテムの残りがない場合でも実際に読み込まれるプロパティの1つです) –

関連する問題