2012-06-29 72 views
5

作为实现按钮到功能区工具栏的一部分。我需要Button java脚本文件中的模式名称。所以我试图使用下面的命令来获取模式对象。如何从Tridion中的模式对象获取模式名称?

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

上述命令将返回模式对象。但是如何从模式对象中获取模式标题。请帮我解决这个问题。提前致谢。早期的反应是赞赏。

回答

-5

使用下面的命令一台可以上网的模式名称。

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

感谢Romkes的帮助。

嘿pufflin我不是说这是唯一的解决方案。但是这个命令毫不拖延地工作。对不起如果我伤害任何人的感情。

+1

只有当项目已经加载到列表中时,这仍然会起作用。这显然是在你的测试中,但你的用户可能会发现该项目尚未加载的情况。让自己和你的用户得到一个好处,并坚持Albert建议的方法:你的代码在Web UI中运行,信息可能需要从远程服务器获取。 –

10

您需要通过调用模式对象上的.load(true)来加载项目信息。因为(显而易见)并非所有信息都是由于性能原因而被加载的。

由于.load()调用是异步的,因此您必须使用回调函数来“知道”何时加载完成。

您可以使用下面的代码加载项并读取它的属性(代码简化):

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

感谢您的回复。如果将alert放在loaded()方法中,它正在工作。如果不是,则返回NULL。看来它需要一些时间来加载。如何避免这种情况?你能解释我的解决方案吗?提前致谢。 –

+1

你不“避免”。这是一个异步过程。相反,你应该使用事件(例如查看$ evt.addEventHandler)来触发你的代码在你需要的时候运行。 –

+2

我会检查getStaticTitle是否首先返回任何东西 - 虽然其他项目的链接通常具有目标的ID和标题,但标题是可能实际加载的那些属性之一) –

相关问题