tridion - 在组件编辑器中获取字段的 _current_ 值? (Tridion 2011 SP1)

标签 tridion

我正在为“保存”命令编写扩展,基本上我想验证某些字段并显示一个弹出窗口,允许编辑器根据当前日期、版本号和其他一些属性选择给定的关键字或其他值。

我以为我取得了不错的进步,直到我终于想通了 $display.getItem()返回存储在 CM 中的项目,而不是编辑器可能已更改的当前值。

是否有内置方法可以让我获得这些信息?还是我需要解析 DOM 才能弄清楚?

这是我目前拥有的代码

var item = $display.getItem();
if (item.getItemType() == "tcm:16") {
   if (item.getSchema().getStaticTitle() == "Test Schema") {
      var content = $xml.getNewXmlDocument(item.getContent());
      var fieldXml = $xml.getInnerText(content, "//*[local-name()='NewField']");
      alert(fieldXml);
   }
}

它正在工作 - 我得到了“NewField”的值 - 但这是项目加载时的值,而不是当前值。

有趣的是,item.getTitle()显示 Title 字段的当前值,所以我希望也有一种方法可以为自定义字段实现这一点。

最佳答案

我不知道这是否是正确的方法,但是您可以在项目上触发“collectdata”事件 - 这将使用迄今为止在编辑屏幕上输入的内容更新它的数据。

var item = $display.getView().getItem();
item.fireEvent("collectdata");
$log.message(item.getXml());

关于tridion - 在组件编辑器中获取字段的 _current_ 值? (Tridion 2011 SP1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463406/

相关文章:

tridion - 无法获取手动事件的所有者和执行者

tridion - 安装出站电子邮件后出错

tridion - 如何为禁用文本框中更改的文本连接 Tridion GUI 扩展事件?

linq - "the method join is not supported"使用 Tridion OData 服务和 Linq

wcf - 如何使用 CoreService 在自定义类上实现 WCF 事务支持?

tridion - 在内联编辑期间单击“更新预览”按钮时出现错误 "Schema Reference ID"(Tridion UI)

Tridion 2009 SP1 : Custom Page that uses TDSE. 已发布的页面保留在发布队列中

tridion - 如何在 Tridion 中使用 WebDAV URL 列出文件夹的现有组件?

tridion - Tridion CP 2009 SP1 可以提取的最大内容大小是多少?

tridion - 如何在 Tridion 2011 sp1 中配置 WebDAV